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
- TypeBuilderInstantiation.cs
- QueuedDeliveryRequirementsMode.cs
- AuthenticationService.cs
- RedirectionProxy.cs
- TextServicesPropertyRanges.cs
- SiblingIterators.cs
- InternalConfigHost.cs
- WebPartTracker.cs
- mediaeventshelper.cs
- WsdlBuildProvider.cs
- UrlMappingsModule.cs
- Content.cs
- NativeActivityContext.cs
- CodeObjectCreateExpression.cs
- ServiceInfo.cs
- PreservationFileWriter.cs
- UserInitiatedRoutedEventPermissionAttribute.cs
- SqlMethods.cs
- dtdvalidator.cs
- ApplicationTrust.cs
- DataGridViewSortCompareEventArgs.cs
- SystemFonts.cs
- LineSegment.cs
- SrgsRule.cs
- DataGridGeneralPage.cs
- ImageClickEventArgs.cs
- SynthesizerStateChangedEventArgs.cs
- TdsParameterSetter.cs
- NullableDecimalMinMaxAggregationOperator.cs
- ToolStripPanelRow.cs
- _LocalDataStore.cs
- ConfigurationProperty.cs
- QueueException.cs
- CodeDomLoader.cs
- EntityContainerAssociationSetEnd.cs
- XmlDictionaryString.cs
- XmlName.cs
- WebReferencesBuildProvider.cs
- RuntimeConfigurationRecord.cs
- DiagnosticTraceSource.cs
- XmlQueryRuntime.cs
- OdbcPermission.cs
- OneOf.cs
- DirectoryNotFoundException.cs
- TemplateColumn.cs
- ManifestResourceInfo.cs
- QilStrConcatenator.cs
- ItemMap.cs
- DetailsViewActionList.cs
- WebBrowserProgressChangedEventHandler.cs
- SelectionManager.cs
- TraceListeners.cs
- WebResponse.cs
- _ServiceNameStore.cs
- StdValidatorsAndConverters.cs
- DataSourceView.cs
- PageVisual.cs
- SynchronizedMessageSource.cs
- SecurityState.cs
- _SslSessionsCache.cs
- XmlDownloadManager.cs
- ListViewGroupConverter.cs
- HtmlTableRow.cs
- SimpleTextLine.cs
- TemplateEditingFrame.cs
- MultipartIdentifier.cs
- Attributes.cs
- HWStack.cs
- ToolBar.cs
- XmlDesigner.cs
- Message.cs
- TearOffProxy.cs
- UnmanagedMemoryStreamWrapper.cs
- KeyPullup.cs
- DelegateArgumentReference.cs
- TextWriter.cs
- SelectionWordBreaker.cs
- contentDescriptor.cs
- KeyToListMap.cs
- EntityType.cs
- SqlGenerator.cs
- Italic.cs
- DetailsViewDeletedEventArgs.cs
- TextWriterTraceListener.cs
- OperationAbortedException.cs
- PageAdapter.cs
- MailMessage.cs
- TypeLibConverter.cs
- ObjectDataSourceDesigner.cs
- RawAppCommandInputReport.cs
- WeakReferenceList.cs
- WebControl.cs
- PartitionerQueryOperator.cs
- HttpApplication.cs
- XXXOnTypeBuilderInstantiation.cs
- SortedList.cs
- EmissiveMaterial.cs
- SmiConnection.cs
- KeyManager.cs
- DataIdProcessor.cs