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
- SecuritySessionClientSettings.cs
- Attributes.cs
- BorderGapMaskConverter.cs
- ComboBoxDesigner.cs
- CorrelationActionMessageFilter.cs
- BinaryParser.cs
- _NetworkingPerfCounters.cs
- PagesSection.cs
- ClientEventManager.cs
- HybridDictionary.cs
- WriteableOnDemandPackagePart.cs
- RemotingAttributes.cs
- Collection.cs
- ErrorTableItemStyle.cs
- ChainOfDependencies.cs
- MSG.cs
- Bezier.cs
- DataGridState.cs
- WinFormsUtils.cs
- DoubleAnimationUsingPath.cs
- ProxyHelper.cs
- FileDataSourceCache.cs
- SqlDataSourceConfigureFilterForm.cs
- NavigationPropertyAccessor.cs
- DetailsViewInsertedEventArgs.cs
- DependencyObjectProvider.cs
- DbDataRecord.cs
- GenerateTemporaryTargetAssembly.cs
- TopClause.cs
- TextElement.cs
- MetabaseServerConfig.cs
- SystemBrushes.cs
- IndexingContentUnit.cs
- ApplicationSecurityManager.cs
- SystemInformation.cs
- TypeSystemProvider.cs
- CellRelation.cs
- WebPartVerbsEventArgs.cs
- TraceListener.cs
- OdbcPermission.cs
- UnsafeMethods.cs
- XamlTemplateSerializer.cs
- DynamicILGenerator.cs
- ConfigXmlAttribute.cs
- MessageQueuePermissionEntryCollection.cs
- SQLByteStorage.cs
- CharStorage.cs
- EllipseGeometry.cs
- DecoderFallback.cs
- ClientFormsAuthenticationMembershipProvider.cs
- TextFormatterImp.cs
- OutKeywords.cs
- PtsContext.cs
- ClientConfigurationHost.cs
- ReflectionHelper.cs
- xmlsaver.cs
- XmlUtil.cs
- SqlXml.cs
- SmiEventStream.cs
- SurrogateSelector.cs
- StylusPlugInCollection.cs
- ListContractAdapter.cs
- XmlSchemaAnnotation.cs
- TreeView.cs
- Mapping.cs
- DictionaryContent.cs
- PathStreamGeometryContext.cs
- RadialGradientBrush.cs
- DispatcherExceptionEventArgs.cs
- HandlerFactoryWrapper.cs
- MatrixAnimationUsingKeyFrames.cs
- UriSection.cs
- Schedule.cs
- XmlBinaryReader.cs
- ItemList.cs
- MetaTable.cs
- DoWorkEventArgs.cs
- DelegateInArgument.cs
- SoapSchemaExporter.cs
- FrugalList.cs
- EndOfStreamException.cs
- Buffer.cs
- Executor.cs
- SqlClientPermission.cs
- WebBrowserEvent.cs
- AstNode.cs
- Library.cs
- DataSourceGroupCollection.cs
- WindowsToolbar.cs
- Header.cs
- BaseCodeDomTreeGenerator.cs
- IndexOutOfRangeException.cs
- ContextMenu.cs
- ReferentialConstraint.cs
- QilTernary.cs
- TrackingProfileDeserializationException.cs
- IItemProperties.cs
- PointCollection.cs
- DynamicPropertyHolder.cs
- TextTreeUndo.cs