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
- ETagAttribute.cs
- HostingPreferredMapPath.cs
- ImageListUtils.cs
- OdbcInfoMessageEvent.cs
- PageSetupDialog.cs
- QueryOperatorEnumerator.cs
- SerializationEventsCache.cs
- ItemChangedEventArgs.cs
- XmlWrappingReader.cs
- OptimizerPatterns.cs
- TdsParserSafeHandles.cs
- IdentityVerifier.cs
- InternalDispatchObject.cs
- IntSecurity.cs
- SnapLine.cs
- MSAAWinEventWrap.cs
- FacetValues.cs
- EnvelopedSignatureTransform.cs
- SAPICategories.cs
- SchemaEntity.cs
- Variant.cs
- SocketManager.cs
- JavascriptXmlWriterWrapper.cs
- Visual3D.cs
- _ShellExpression.cs
- WebControl.cs
- X509KeyIdentifierClauseType.cs
- DecimalStorage.cs
- FormsAuthentication.cs
- COMException.cs
- KeyTimeConverter.cs
- XamlClipboardData.cs
- ResourceDisplayNameAttribute.cs
- EvidenceBase.cs
- SoapParser.cs
- SaveFileDialog.cs
- WebPartUtil.cs
- RedirectionProxy.cs
- XslTransformFileEditor.cs
- Flowchart.cs
- QueryOperationResponseOfT.cs
- SerializationInfo.cs
- SerializerProvider.cs
- CollectionChangeEventArgs.cs
- ComponentResourceKey.cs
- Table.cs
- Button.cs
- PropertyMetadata.cs
- SqlNotificationRequest.cs
- WebSysDescriptionAttribute.cs
- ClientSideProviderDescription.cs
- CurrencyManager.cs
- InputScopeManager.cs
- figurelength.cs
- FontDriver.cs
- ProfileProvider.cs
- GrammarBuilderRuleRef.cs
- TrackBar.cs
- ServiceOperationWrapper.cs
- MouseGestureConverter.cs
- PreviousTrackingServiceAttribute.cs
- BitmapCodecInfoInternal.cs
- CodeDirectoryCompiler.cs
- ReadOnlyAttribute.cs
- util.cs
- DataServiceStreamProviderWrapper.cs
- SqlLiftIndependentRowExpressions.cs
- XmlElementAttribute.cs
- XmlBufferReader.cs
- XmlReflectionImporter.cs
- TypefaceMetricsCache.cs
- PropertyInfoSet.cs
- SortedSetDebugView.cs
- WinInetCache.cs
- TemplateBamlTreeBuilder.cs
- FixedSOMFixedBlock.cs
- CodeTypeDeclarationCollection.cs
- FormClosingEvent.cs
- AccessDataSource.cs
- RadioButtonFlatAdapter.cs
- TextShapeableCharacters.cs
- AsyncContentLoadedEventArgs.cs
- ToolStripSystemRenderer.cs
- TrackingValidationObjectDictionary.cs
- UnsafeCollabNativeMethods.cs
- DefaultTextStore.cs
- Size.cs
- HtmlInputReset.cs
- ServiceControllerDesigner.cs
- PathData.cs
- FreezableOperations.cs
- ACE.cs
- ProjectionPathSegment.cs
- XsltException.cs
- ToolStripOverflowButton.cs
- DataTableExtensions.cs
- HatchBrush.cs
- SqlConnectionStringBuilder.cs
- SynchronousChannelMergeEnumerator.cs
- RestHandlerFactory.cs