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
- HandlerFactoryCache.cs
- SmiEventSink.cs
- WindowsAuthenticationEventArgs.cs
- TraceContext.cs
- TagPrefixAttribute.cs
- ConsumerConnectionPoint.cs
- IssuedTokensHeader.cs
- MissingFieldException.cs
- MetadataArtifactLoaderCompositeFile.cs
- FileUpload.cs
- ThreadSafeList.cs
- WebPartManager.cs
- TypeExtension.cs
- MobileErrorInfo.cs
- ResponseStream.cs
- DoubleLinkListEnumerator.cs
- CmsInterop.cs
- DependencyPropertyKey.cs
- PropertyRecord.cs
- HMAC.cs
- InvalidProgramException.cs
- XmlCompatibilityReader.cs
- DictionaryTraceRecord.cs
- DataListCommandEventArgs.cs
- DataViewManager.cs
- GetWorkflowTree.cs
- TextServicesDisplayAttributePropertyRanges.cs
- PersonalizationDictionary.cs
- ReadOnlyMetadataCollection.cs
- ScriptReferenceEventArgs.cs
- ISessionStateStore.cs
- ResXResourceWriter.cs
- XmlSchemaDocumentation.cs
- MultipleViewPattern.cs
- SubMenuStyleCollection.cs
- Utils.cs
- RequestUriProcessor.cs
- SqlDependency.cs
- IsolatedStorageSecurityState.cs
- TypeReference.cs
- COMException.cs
- MethodImplAttribute.cs
- counter.cs
- XmlChildEnumerator.cs
- SymbolMethod.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- BinaryMessageEncodingElement.cs
- XmlBinaryReader.cs
- CustomAttributeFormatException.cs
- Point3DConverter.cs
- ListenerElementsCollection.cs
- ReadWriteSpinLock.cs
- ModuleBuilder.cs
- BinaryConverter.cs
- LinearGradientBrush.cs
- QueryStatement.cs
- DesignerProperties.cs
- CodeTypeMemberCollection.cs
- RowToFieldTransformer.cs
- XslVisitor.cs
- WizardForm.cs
- ExpandableObjectConverter.cs
- ELinqQueryState.cs
- DataSourceControl.cs
- InputLanguageCollection.cs
- HiddenFieldDesigner.cs
- LinqDataSource.cs
- ObjectDataSourceMethodEventArgs.cs
- ComplexPropertyEntry.cs
- PropertyInfoSet.cs
- MemberRelationshipService.cs
- DesignerOptionService.cs
- XhtmlBasicListAdapter.cs
- validationstate.cs
- ISFClipboardData.cs
- WebPartConnectionsCancelVerb.cs
- DataChangedEventManager.cs
- TextBox.cs
- VisualTreeHelper.cs
- TileBrush.cs
- FixedSOMPageConstructor.cs
- ClientSettingsStore.cs
- EmptyStringExpandableObjectConverter.cs
- DataGridViewElement.cs
- BindingContext.cs
- FilterException.cs
- SiteMapPath.cs
- ValidationError.cs
- TryLoadRunnableWorkflowCommand.cs
- FrameworkObject.cs
- CodeMemberField.cs
- FilteredDataSetHelper.cs
- KnownIds.cs
- ViewSimplifier.cs
- BridgeDataReader.cs
- AnimationTimeline.cs
- RangeValuePattern.cs
- LoginAutoFormat.cs
- DrawingAttributeSerializer.cs
- BitmapEffectDrawing.cs