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
- WebEventCodes.cs
- RegexTree.cs
- EditBehavior.cs
- BindStream.cs
- IntellisenseTextBox.designer.cs
- SqlMethodTransformer.cs
- BaseCodeDomTreeGenerator.cs
- ZoneButton.cs
- DefaultBinder.cs
- ResourceSet.cs
- EncoderParameter.cs
- WindowsSysHeader.cs
- ConnectionConsumerAttribute.cs
- ZipIOLocalFileBlock.cs
- MessagingActivityHelper.cs
- sqlnorm.cs
- Duration.cs
- TraceHandler.cs
- ConstructorNeedsTagAttribute.cs
- SafeNativeMethodsCLR.cs
- WebFaultClientMessageInspector.cs
- TextTrailingCharacterEllipsis.cs
- KeyboardInputProviderAcquireFocusEventArgs.cs
- ContentTextAutomationPeer.cs
- ActivityMarkupSerializer.cs
- TypedTableBase.cs
- FtpCachePolicyElement.cs
- TableColumn.cs
- AdapterUtil.cs
- ListView.cs
- TranslateTransform3D.cs
- SmtpClient.cs
- ProcessProtocolHandler.cs
- CachedTypeface.cs
- CodeTypeMemberCollection.cs
- CurrentChangingEventArgs.cs
- _AutoWebProxyScriptEngine.cs
- MessageBodyMemberAttribute.cs
- GeometryCollection.cs
- MinimizableAttributeTypeConverter.cs
- SoapReflector.cs
- HTTPAPI_VERSION.cs
- FamilyCollection.cs
- TimeZoneInfo.cs
- WebPartDisplayModeEventArgs.cs
- ComponentDispatcher.cs
- View.cs
- LocalClientSecuritySettingsElement.cs
- DataGridViewCellStyleConverter.cs
- NativeMethods.cs
- ExpressionConverter.cs
- Deserializer.cs
- CryptoConfig.cs
- StateDesigner.CommentLayoutGlyph.cs
- TypeConverterHelper.cs
- UiaCoreApi.cs
- ColorConverter.cs
- EntryWrittenEventArgs.cs
- WindowsFormsSectionHandler.cs
- BitmapMetadata.cs
- NativeMethods.cs
- TextStore.cs
- PrtTicket_Editor.cs
- TTSEngineProxy.cs
- NetTcpSecurity.cs
- ToolBar.cs
- XPathDocumentNavigator.cs
- DoubleCollectionValueSerializer.cs
- IDReferencePropertyAttribute.cs
- QilInvokeLateBound.cs
- HandleCollector.cs
- ListViewDeleteEventArgs.cs
- MetaForeignKeyColumn.cs
- StringArrayConverter.cs
- StandardOleMarshalObject.cs
- ControlEvent.cs
- Stylesheet.cs
- WizardPanelChangingEventArgs.cs
- UncommonField.cs
- OdbcParameter.cs
- Nullable.cs
- SyntaxCheck.cs
- TemplateKeyConverter.cs
- SpeechAudioFormatInfo.cs
- ControlEvent.cs
- MessageHeaderException.cs
- QueryContinueDragEventArgs.cs
- TabItem.cs
- KeyMatchBuilder.cs
- SqlDataSource.cs
- ArraySubsetEnumerator.cs
- SystemGatewayIPAddressInformation.cs
- RequestCacheEntry.cs
- SerializationEventsCache.cs
- DataGridViewIntLinkedList.cs
- StaticFileHandler.cs
- ImageSourceValueSerializer.cs
- ServiceThrottle.cs
- X509SecurityTokenAuthenticator.cs
- HtmlSelect.cs