Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / AddIn / AddIn / System / Addin / Hosting / Store / HostAdapter.cs / 1305376 / HostAdapter.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: HostAdapter ** ** Purpose: Represents an host adapter class on disk. ** ===========================================================*/ using System; using System.IO; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Globalization; using System.Reflection; using System.Text; using System.AddIn.Contract; using System.AddIn.MiniReflection; using System.Diagnostics.Contracts; namespace System.AddIn { [Serializable] internal sealed class HostAdapter : PipelineComponent { private static readonly TypeInfo typeofIContract = new TypeInfo(typeof(System.AddIn.Contract.IContract)); private TypeInfo[] _potentialHAVs; private List_constructors; public HostAdapter(TypeInfo typeInfo, String assemblyLocation) : base(typeInfo, assemblyLocation) { _constructors = new List (); } public List Constructors { get { return _constructors; } } public TypeInfo[] HostAddinViews { get { return _potentialHAVs; } } public override string ToString() { return String.Format(CultureInfo.CurrentCulture, Res.HostAdapterToString, Name, BestAvailableLocation); } internal override bool Validate(TypeInfo type, Collection warnings) { _potentialHAVs = FindBaseTypesAndInterfaces(type); if (_potentialHAVs.Length == 0) { return false; } foreach (MiniConstructorInfo ci in type.GetConstructors(true)) { MiniParameterInfo[] pars = ci.GetParameters(); if (pars.Length != 1) { warnings.Add(String.Format(CultureInfo.CurrentCulture, Res.HostAdapterUnusableCtorMultipleParams, type.AssemblyQualifiedName)); continue; } TypeInfo paramType = pars[0].ParameterType; bool success = false; try { if (paramType.IsInterface && (paramType.Implements(typeofIContract))) { _constructors.Add(paramType); success = true; } } catch (FileNotFoundException) { } catch (FileLoadException) { // Can happen for a constructor taking a type that isn't in mscorlib nor System.AddIn.Contract, and // also isn't in any of the directories that we would probe. } if (!success) { warnings.Add(String.Format(CultureInfo.CurrentCulture, Res.HostAdapterUnusableCtorBadParam, type.AssemblyQualifiedName, paramType.FullName)); continue; } } if (_constructors.Count == 0) { warnings.Add(String.Format(CultureInfo.CurrentCulture, Res.HostAdapterNoValidCtors, type.AssemblyQualifiedName)); return false; } return base.Validate(type, warnings); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: HostAdapter ** ** Purpose: Represents an host adapter class on disk. ** ===========================================================*/ using System; using System.IO; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Globalization; using System.Reflection; using System.Text; using System.AddIn.Contract; using System.AddIn.MiniReflection; using System.Diagnostics.Contracts; namespace System.AddIn { [Serializable] internal sealed class HostAdapter : PipelineComponent { private static readonly TypeInfo typeofIContract = new TypeInfo(typeof(System.AddIn.Contract.IContract)); private TypeInfo[] _potentialHAVs; private List _constructors; public HostAdapter(TypeInfo typeInfo, String assemblyLocation) : base(typeInfo, assemblyLocation) { _constructors = new List (); } public List Constructors { get { return _constructors; } } public TypeInfo[] HostAddinViews { get { return _potentialHAVs; } } public override string ToString() { return String.Format(CultureInfo.CurrentCulture, Res.HostAdapterToString, Name, BestAvailableLocation); } internal override bool Validate(TypeInfo type, Collection warnings) { _potentialHAVs = FindBaseTypesAndInterfaces(type); if (_potentialHAVs.Length == 0) { return false; } foreach (MiniConstructorInfo ci in type.GetConstructors(true)) { MiniParameterInfo[] pars = ci.GetParameters(); if (pars.Length != 1) { warnings.Add(String.Format(CultureInfo.CurrentCulture, Res.HostAdapterUnusableCtorMultipleParams, type.AssemblyQualifiedName)); continue; } TypeInfo paramType = pars[0].ParameterType; bool success = false; try { if (paramType.IsInterface && (paramType.Implements(typeofIContract))) { _constructors.Add(paramType); success = true; } } catch (FileNotFoundException) { } catch (FileLoadException) { // Can happen for a constructor taking a type that isn't in mscorlib nor System.AddIn.Contract, and // also isn't in any of the directories that we would probe. } if (!success) { warnings.Add(String.Format(CultureInfo.CurrentCulture, Res.HostAdapterUnusableCtorBadParam, type.AssemblyQualifiedName, paramType.FullName)); continue; } } if (_constructors.Count == 0) { warnings.Add(String.Format(CultureInfo.CurrentCulture, Res.HostAdapterNoValidCtors, type.AssemblyQualifiedName)); return false; } return base.Validate(type, warnings); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ObjectListDesigner.cs
- ToolTipService.cs
- SkinBuilder.cs
- MD5.cs
- ToolStrip.cs
- ToolStripPanelRow.cs
- KeyPullup.cs
- IProvider.cs
- WebPartConnectionsCloseVerb.cs
- CacheChildrenQuery.cs
- MILUtilities.cs
- FixedSOMImage.cs
- XamlBrushSerializer.cs
- NetworkCredential.cs
- ObjectDataSourceDisposingEventArgs.cs
- SourceLineInfo.cs
- ImportStoreException.cs
- ApplicationId.cs
- Encoder.cs
- LogEntrySerialization.cs
- DbConnectionPool.cs
- TimeZoneNotFoundException.cs
- KernelTypeValidation.cs
- NumberFunctions.cs
- Rules.cs
- BinaryNode.cs
- FormattedTextSymbols.cs
- ResourceDisplayNameAttribute.cs
- SrgsGrammarCompiler.cs
- DropSource.cs
- FreezableCollection.cs
- TransportContext.cs
- PrintingPermissionAttribute.cs
- UIElement.cs
- ServiceNameElementCollection.cs
- NavigationProperty.cs
- controlskin.cs
- sitestring.cs
- MarshalByRefObject.cs
- StylusTouchDevice.cs
- ProcessModule.cs
- SecurityPermission.cs
- BeginStoryboard.cs
- DownloadProgressEventArgs.cs
- ZipIOCentralDirectoryBlock.cs
- ExpandableObjectConverter.cs
- Int64AnimationUsingKeyFrames.cs
- HashCodeCombiner.cs
- Rotation3D.cs
- DisplayInformation.cs
- ContractCodeDomInfo.cs
- SecurityContextSecurityTokenAuthenticator.cs
- TemporaryBitmapFile.cs
- LedgerEntryCollection.cs
- EntityDataSourceQueryBuilder.cs
- ContractNamespaceAttribute.cs
- SoapClientMessage.cs
- SerializationSectionGroup.cs
- JsonMessageEncoderFactory.cs
- HwndMouseInputProvider.cs
- PixelFormatConverter.cs
- FusionWrap.cs
- OneWayBindingElementImporter.cs
- FileSecurity.cs
- RotateTransform.cs
- Encoding.cs
- OrderingInfo.cs
- ChangeProcessor.cs
- TextRunCache.cs
- Quaternion.cs
- PrimitiveType.cs
- DataGridPagerStyle.cs
- StrongName.cs
- Selection.cs
- BooleanExpr.cs
- CodeComment.cs
- FilterFactory.cs
- SetterBaseCollection.cs
- MetadataItemSerializer.cs
- JulianCalendar.cs
- StringUtil.cs
- TextLineResult.cs
- ReadOnlyCollection.cs
- AmbientValueAttribute.cs
- InvalidCastException.cs
- WebPartVerb.cs
- StsCommunicationException.cs
- ObjectSecurity.cs
- HatchBrush.cs
- basenumberconverter.cs
- SqlCaseSimplifier.cs
- UpdatePanelTrigger.cs
- Site.cs
- DetailsView.cs
- AssemblyBuilder.cs
- SupportingTokenSecurityTokenResolver.cs
- XmlDataSourceNodeDescriptor.cs
- TextHidden.cs
- JsonServiceDocumentSerializer.cs
- RelationshipEntry.cs