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
- Comparer.cs
- uribuilder.cs
- SQLBinaryStorage.cs
- CaseInsensitiveOrdinalStringComparer.cs
- FormViewPagerRow.cs
- KnownBoxes.cs
- TextBoxAutomationPeer.cs
- EmptyCollection.cs
- UIElementCollection.cs
- FillRuleValidation.cs
- WindowsFormsHostAutomationPeer.cs
- EdmRelationshipRoleAttribute.cs
- OleDbParameter.cs
- CellParagraph.cs
- TextProperties.cs
- MeasureItemEvent.cs
- TypeGeneratedEventArgs.cs
- DataGrid.cs
- ExpressionNormalizer.cs
- ZoneButton.cs
- HttpCookiesSection.cs
- RunInstallerAttribute.cs
- DesignerActionVerbItem.cs
- storepermission.cs
- EventLogPermission.cs
- DataObjectSettingDataEventArgs.cs
- KeyNotFoundException.cs
- SortedList.cs
- FormParameter.cs
- MultiTrigger.cs
- AttributeProviderAttribute.cs
- UniqueConstraint.cs
- ServerProtocol.cs
- IUnknownConstantAttribute.cs
- Addressing.cs
- FormsIdentity.cs
- RowToFieldTransformer.cs
- RectangleHotSpot.cs
- ScriptControlManager.cs
- CheckPair.cs
- RtfControls.cs
- LayoutUtils.cs
- WebControlAdapter.cs
- ZeroOpNode.cs
- TriggerCollection.cs
- BooleanStorage.cs
- NavigationProperty.cs
- ElapsedEventArgs.cs
- ClientScriptManagerWrapper.cs
- PublisherIdentityPermission.cs
- MissingFieldException.cs
- UpdateManifestForBrowserApplication.cs
- ContextQuery.cs
- SQLBytes.cs
- ProgressBarRenderer.cs
- XmlArrayItemAttribute.cs
- TCEAdapterGenerator.cs
- ProfileEventArgs.cs
- ListBindingHelper.cs
- AssemblyHelper.cs
- DesignTimeData.cs
- BitmapMetadataEnumerator.cs
- DataTableNameHandler.cs
- SqlVersion.cs
- ToolTip.cs
- HttpRequestTraceRecord.cs
- PeerNearMe.cs
- FontClient.cs
- VectorAnimationUsingKeyFrames.cs
- GridViewSelectEventArgs.cs
- EntityContainerEmitter.cs
- CodeDOMUtility.cs
- SessionStateModule.cs
- CommandManager.cs
- EditorPartDesigner.cs
- StringKeyFrameCollection.cs
- CalendarDateChangedEventArgs.cs
- CodeCatchClauseCollection.cs
- BufferedOutputStream.cs
- ObjectViewFactory.cs
- PeerCredentialElement.cs
- WebPartEditorApplyVerb.cs
- RadialGradientBrush.cs
- diagnosticsswitches.cs
- DesignTimeParseData.cs
- CancellationHandler.cs
- AffineTransform3D.cs
- ColorTransform.cs
- odbcmetadatafactory.cs
- EmbeddedMailObjectsCollection.cs
- XamlInt32CollectionSerializer.cs
- Helper.cs
- UIElement3DAutomationPeer.cs
- GenerateHelper.cs
- _LocalDataStoreMgr.cs
- EventItfInfo.cs
- UnsafeNativeMethods.cs
- GraphicsState.cs
- ByteStreamGeometryContext.cs
- CollectionChangeEventArgs.cs