Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Compilation / ClientBuildManagerTypeDescriptionProviderBridge.cs / 1305376 / ClientBuildManagerTypeDescriptionProviderBridge.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Reflection; using System.Web.Util; ////// This is a helper class lives in the VS appdomain where the CBM is created, and passed into the CBM-hosted appdomain /// to allow cross-appdomain calls to get filtered runtime member information. /// internal class ClientBuildManagerTypeDescriptionProviderBridge : MarshalByRefObject { private TypeDescriptionProvider _targetFrameworkProvider; internal ClientBuildManagerTypeDescriptionProviderBridge(TypeDescriptionProvider typeDescriptionProvider) { _targetFrameworkProvider = typeDescriptionProvider; } public override Object InitializeLifetimeService() { return null; // never expire lease } private Type GetReflectionType(Type type) { Debug.Assert(_targetFrameworkProvider != null, "_targetFrameworkProvider should not be null"); if (type == null) { return null; } return _targetFrameworkProvider.GetReflectionType(type); } internal bool HasProperty(Type type, string name, BindingFlags bindingAttr) { if (_targetFrameworkProvider == null) { PropertyInfo runtimePropInfo = type.GetProperty(name, bindingAttr); return runtimePropInfo != null; } Type reflectionType = GetReflectionType(type); PropertyInfo reflectionPropertyInfo = reflectionType.GetProperty(name, bindingAttr); return reflectionPropertyInfo != null; } internal bool HasField(Type type, string name, BindingFlags bindingAttr) { if (_targetFrameworkProvider == null) { FieldInfo runtimeFieldInfo = type.GetField(name, bindingAttr); return runtimeFieldInfo != null; } Type reflectionType = _targetFrameworkProvider.GetReflectionType(type); FieldInfo reflectionFieldInfo = reflectionType.GetField(name, bindingAttr); return reflectionFieldInfo != null; } internal bool HasEvent(Type type, string name) { if (_targetFrameworkProvider == null) { EventInfo runtimeEventInfo = type.GetEvent(name); return runtimeEventInfo != null; } Type reflectionType = _targetFrameworkProvider.GetReflectionType(type); EventInfo reflectionEventInfo = reflectionType.GetEvent(name); return reflectionEventInfo != null; } private string[] GetMemberNames(MemberInfo[] members) { var names = from m in members select m.Name; return names.ToArray(); } internal bool HasMethod(Type type, string name, BindingFlags bindingAttr) { Type reflectionType = type; if (_targetFrameworkProvider != null) { reflectionType = GetReflectionType(type); } MethodInfo methodInfo = reflectionType.GetMethod(name, bindingAttr); return methodInfo != null; } internal string[] GetFilteredProperties(Type type, BindingFlags bindingFlags) { PropertyInfo[] runtimeProperties = type.GetProperties(bindingFlags); if (_targetFrameworkProvider == null) { return GetMemberNames(runtimeProperties); } Type reflectionType = _targetFrameworkProvider.GetReflectionType(type); PropertyInfo[] reflectionProperties = reflectionType.GetProperties(bindingFlags); var reflectionPropertyNames = from p in reflectionProperties select p.Name; return (from p in runtimeProperties where reflectionPropertyNames.Contains(p.Name) select p.Name).ToArray(); } internal string[] GetFilteredEvents(Type type, BindingFlags bindingFlags) { EventInfo[] runtimeEvents= type.GetEvents(bindingFlags); if (_targetFrameworkProvider == null) { return GetMemberNames(runtimeEvents); } Type reflectionType = _targetFrameworkProvider.GetReflectionType(type); EventInfo[] reflectionEvents= reflectionType.GetEvents(bindingFlags); var reflectionEventNames = from e in reflectionEvents select e.Name; return (from e in runtimeEvents where reflectionEventNames.Contains(e.Name) select e.Name).ToArray(); } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- InvalidateEvent.cs
- DataListItemEventArgs.cs
- VisualBrush.cs
- RouteParametersHelper.cs
- DataRecordObjectView.cs
- PaperSource.cs
- QilXmlReader.cs
- EFTableProvider.cs
- ParameterBuilder.cs
- InstallerTypeAttribute.cs
- BodyGlyph.cs
- Int32.cs
- SqlDataSourceStatusEventArgs.cs
- StrongNameKeyPair.cs
- SpecialFolderEnumConverter.cs
- ResumeStoryboard.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- Point3DCollection.cs
- StringFunctions.cs
- OleDbErrorCollection.cs
- ServiceAuthorizationManager.cs
- AutomationElementIdentifiers.cs
- ObjectManager.cs
- HotSpotCollection.cs
- OpenTypeLayoutCache.cs
- Operand.cs
- HtmlElementCollection.cs
- ExceptionHelpers.cs
- DeploymentSection.cs
- CancellationState.cs
- NavigationWindowAutomationPeer.cs
- HashMembershipCondition.cs
- Glyph.cs
- SerializationEventsCache.cs
- MatrixStack.cs
- ToolStripPanelCell.cs
- CaseInsensitiveOrdinalStringComparer.cs
- BevelBitmapEffect.cs
- NodeInfo.cs
- Rotation3DAnimation.cs
- StringArrayConverter.cs
- SafeNativeMethods.cs
- WebPartEditorOkVerb.cs
- AssertFilter.cs
- BaseCodeDomTreeGenerator.cs
- X509Certificate.cs
- SqlErrorCollection.cs
- HighlightComponent.cs
- AnimatedTypeHelpers.cs
- SqlConnectionHelper.cs
- ToolStripDesigner.cs
- ResourceExpressionBuilder.cs
- XmlElement.cs
- PageThemeBuildProvider.cs
- DataTableReader.cs
- _ListenerAsyncResult.cs
- ReadOnlyPropertyMetadata.cs
- EditorPart.cs
- XmlWriterSettings.cs
- ComponentCodeDomSerializer.cs
- SqlDataAdapter.cs
- CompiledQueryCacheEntry.cs
- CreateUserErrorEventArgs.cs
- WebBrowser.cs
- entitydatasourceentitysetnameconverter.cs
- CultureSpecificStringDictionary.cs
- PropertyTab.cs
- DataGridState.cs
- PerfCounters.cs
- WebPartVerb.cs
- XmlStrings.cs
- TextEndOfLine.cs
- XmlLanguageConverter.cs
- TextTrailingWordEllipsis.cs
- DataShape.cs
- ReliableSessionBindingElementImporter.cs
- MobileRedirect.cs
- CategoryNameCollection.cs
- ScrollBarRenderer.cs
- AttributeCollection.cs
- BitmapInitialize.cs
- AdRotator.cs
- PaginationProgressEventArgs.cs
- PersonalizationStateInfoCollection.cs
- VectorCollection.cs
- HtmlEmptyTagControlBuilder.cs
- TitleStyle.cs
- SessionEndingCancelEventArgs.cs
- CopyNodeSetAction.cs
- AccessControlEntry.cs
- XmlCompatibilityReader.cs
- TriggerActionCollection.cs
- StyleXamlTreeBuilder.cs
- CodeIdentifiers.cs
- EventArgs.cs
- Focus.cs
- MetadataExchangeBindings.cs
- ProgressiveCrcCalculatingStream.cs
- OdbcConnectionPoolProviderInfo.cs
- UnsafeNativeMethods.cs