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
- SimpleHandlerBuildProvider.cs
- SmiXetterAccessMap.cs
- ObjectParameter.cs
- DbProviderFactories.cs
- DataViewManager.cs
- IPipelineRuntime.cs
- PropertyBuilder.cs
- SignedXml.cs
- UrlMappingsModule.cs
- AesCryptoServiceProvider.cs
- ControlCollection.cs
- BroadcastEventHelper.cs
- OpacityConverter.cs
- ResourceReferenceExpressionConverter.cs
- CodeCatchClause.cs
- DynamicRenderer.cs
- EditingCoordinator.cs
- NamespaceDisplayAutomationPeer.cs
- BufferBuilder.cs
- TypeInitializationException.cs
- Match.cs
- MemberPath.cs
- DllHostedComPlusServiceHost.cs
- AppendHelper.cs
- TrustVersion.cs
- ConstructorNeedsTagAttribute.cs
- CodeTypeMemberCollection.cs
- MergablePropertyAttribute.cs
- AdornerLayer.cs
- EventSinkActivityDesigner.cs
- NonVisualControlAttribute.cs
- HttpBrowserCapabilitiesWrapper.cs
- XmlExtensionFunction.cs
- DocumentGridContextMenu.cs
- Metafile.cs
- SelectionItemProviderWrapper.cs
- DesignerDataColumn.cs
- HtmlControlPersistable.cs
- SecurityElement.cs
- MasterPageBuildProvider.cs
- MediaElementAutomationPeer.cs
- SafeNativeMethods.cs
- DrawingServices.cs
- WebPartHeaderCloseVerb.cs
- BamlResourceContent.cs
- SimpleHandlerBuildProvider.cs
- ObjectCloneHelper.cs
- MouseGesture.cs
- TextContainerChangeEventArgs.cs
- EventListenerClientSide.cs
- XXXInfos.cs
- VBIdentifierTrimConverter.cs
- MembershipValidatePasswordEventArgs.cs
- DataTemplateSelector.cs
- TextCharacters.cs
- DoubleAnimationBase.cs
- DateTimeFormatInfo.cs
- Profiler.cs
- TraceContext.cs
- HtmlInputSubmit.cs
- CompiledAction.cs
- ArcSegment.cs
- IndexedSelectQueryOperator.cs
- XmlDataDocument.cs
- MemberMaps.cs
- AssemblyBuilder.cs
- ListViewUpdateEventArgs.cs
- XmlAttribute.cs
- Compiler.cs
- ContainerSelectorBehavior.cs
- QueryCacheEntry.cs
- TextRangeEditTables.cs
- WebSysDefaultValueAttribute.cs
- WebReferenceOptions.cs
- DateTimeFormat.cs
- Certificate.cs
- StoreItemCollection.cs
- HttpFileCollectionWrapper.cs
- Pool.cs
- FilterQueryOptionExpression.cs
- PhysicalOps.cs
- MDIClient.cs
- CodeMethodMap.cs
- MethodBuilderInstantiation.cs
- DrawingContextWalker.cs
- UserControlFileEditor.cs
- CodeTypeParameter.cs
- _Semaphore.cs
- AddingNewEventArgs.cs
- ControlDesigner.cs
- ConstraintEnumerator.cs
- DashStyles.cs
- ManualResetEventSlim.cs
- InvalidCommandTreeException.cs
- CqlParserHelpers.cs
- SessionStateContainer.cs
- CompositeScriptReferenceEventArgs.cs
- DocumentCollection.cs
- SafeArrayRankMismatchException.cs
- XamlStream.cs