Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MimeBasePart.cs
- SoapSchemaImporter.cs
- TextEmbeddedObject.cs
- Table.cs
- PointLightBase.cs
- ConversionContext.cs
- XsltOutput.cs
- CorrelationService.cs
- BeginSelectCardRequest.cs
- CommonDialog.cs
- TextStore.cs
- WorkflowDefinitionDispenser.cs
- _SafeNetHandles.cs
- NameValuePermission.cs
- WindowsListViewItemStartMenu.cs
- SafeNativeMethodsMilCoreApi.cs
- BoundPropertyEntry.cs
- NativeMethods.cs
- ControlBindingsCollection.cs
- HttpCapabilitiesEvaluator.cs
- FlowLayout.cs
- X509CertificateTokenFactoryCredential.cs
- coordinator.cs
- MessageQueueInstaller.cs
- ImmutableObjectAttribute.cs
- SR.Designer.cs
- EpmContentSerializerBase.cs
- XmlBoundElement.cs
- CapabilitiesAssignment.cs
- ICspAsymmetricAlgorithm.cs
- ReadOnlyTernaryTree.cs
- Pair.cs
- AssemblySettingAttributes.cs
- TableColumn.cs
- TextServicesCompartmentEventSink.cs
- SafePipeHandle.cs
- ScrollBar.cs
- Utility.cs
- CookielessData.cs
- BindValidator.cs
- GetMemberBinder.cs
- MonitoringDescriptionAttribute.cs
- DBCommandBuilder.cs
- DbFunctionCommandTree.cs
- ToolTipAutomationPeer.cs
- FixedDocumentSequencePaginator.cs
- WinEventHandler.cs
- SelectionItemPattern.cs
- XamlPoint3DCollectionSerializer.cs
- BuilderInfo.cs
- ConfigurationSectionGroupCollection.cs
- COM2PropertyDescriptor.cs
- HandleTable.cs
- util.cs
- OletxCommittableTransaction.cs
- dbdatarecord.cs
- BatchServiceHost.cs
- ScopelessEnumAttribute.cs
- FormatException.cs
- HandlerBase.cs
- CommandBinding.cs
- ReadonlyMessageFilter.cs
- CodeMethodReturnStatement.cs
- ACL.cs
- JsonWriter.cs
- CodeIndexerExpression.cs
- Pen.cs
- ExtendedPropertyInfo.cs
- DeploymentExceptionMapper.cs
- HwndSubclass.cs
- Point3D.cs
- SettingsSavedEventArgs.cs
- EntityEntry.cs
- Decorator.cs
- ThicknessKeyFrameCollection.cs
- EndSelectCardRequest.cs
- SettingsAttributes.cs
- TaskForm.cs
- WebPartTransformer.cs
- OracleRowUpdatedEventArgs.cs
- TextRunCache.cs
- MouseGestureValueSerializer.cs
- CaseInsensitiveOrdinalStringComparer.cs
- RegionInfo.cs
- DebuggerAttributes.cs
- TokenCreationParameter.cs
- SplineKeyFrames.cs
- SystemTcpStatistics.cs
- DataObjectMethodAttribute.cs
- SimpleTableProvider.cs
- ValidationEventArgs.cs
- XmlEventCache.cs
- RepeaterItem.cs
- WebPartDisplayModeCollection.cs
- ZipIOLocalFileDataDescriptor.cs
- PickBranch.cs
- XmlSortKey.cs
- AutomationPatternInfo.cs
- WebBrowserDocumentCompletedEventHandler.cs
- BrowserCapabilitiesFactory.cs