Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / AddIn / AddIn / System / Addin / Pipeline / ContractAdapter.cs / 1305376 / ContractAdapter.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: ContractAdapter ** ===========================================================*/ using System; using System.Collections.Generic; using System.Globalization; using System.AddIn.Contract; using System.AddIn; using System.Security; using System.Security.Permissions; using System.AddIn.Hosting; using System.Reflection; using System.AddIn.MiniReflection; using System.Diagnostics.Contracts; namespace System.AddIn.Pipeline { public static class ContractAdapter { public static ContractHandle ViewToContractAdapter(Object view) { if (view == null) throw new ArgumentNullException("view"); System.Diagnostics.Contracts.Contract.EndContractBlock(); AddInController controller = AddInController.GetAddInController(view); if (controller != null) { return new ContractHandle(controller.AddInControllerImpl.GetContract()); } return null; } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Factory Method")] public static TView ContractToViewAdapter(ContractHandle contract, PipelineStoreLocation location) { if (location != PipelineStoreLocation.ApplicationBase) throw new ArgumentException(Res.InvalidPipelineStoreLocation, "location"); System.Diagnostics.Contracts.Contract.EndContractBlock(); String appBase = AddInStore.GetAppBase(); return ContractToViewAdapterImpl (contract, appBase, false); } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Factory Method")] public static TView ContractToViewAdapter (ContractHandle contract, string pipelineRoot) { return ContractToViewAdapterImpl (contract, pipelineRoot, true); } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability","CA2004:RemoveCallsToGCKeepAlive", Justification="The message is about SafeHandles")] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification="Factory Method")] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security","CA2103:ReviewImperativeSecurity")] private static TView ContractToViewAdapterImpl (ContractHandle contract, String pipelineRoot, bool demand) { if (contract == null) throw new ArgumentNullException("contract"); if (pipelineRoot == null) throw new ArgumentNullException("pipelineRoot"); if (String.IsNullOrEmpty(pipelineRoot)) throw new ArgumentException(Res.PathCantBeEmpty); System.Diagnostics.Contracts.Contract.EndContractBlock(); if (demand) new FileIOPermission(FileIOPermissionAccess.Read, pipelineRoot).Demand(); Type havType = typeof(TView); TypeInfo havTypeInfo = new TypeInfo(havType); List partialTokens = AddInStore.GetPartialTokens(pipelineRoot); foreach (PartialToken partialToken in partialTokens) { if (AddInStore.Contains(partialToken.HostAdapter.HostAddinViews, havTypeInfo)) { partialToken.PipelineRootDirectory = pipelineRoot; //Ask for something that can implement the contract in this partial token. The result will //either be null, the addin adapter itself, or another addin adapter IContract subcontract = contract.Contract.QueryContract(partialToken._contract.TypeInfo.AssemblyQualifiedName); if (subcontract != null) { //Instantiate the adapter and pass in the addin to its constructor TView hav = AddInActivator.ActivateHostAdapter (partialToken, subcontract); return hav; } } } // Don't let the ref count go to zero too soon, before we increment it in ActivateHostAdapter // This is important when QueryContract returns the addIn adapter itself. A GC at that point // may collect the ContractHandle and decrement the ref count to zero before we have a chance to increment it System.GC.KeepAlive(contract); // return null. Compiler makes us return default(TView), which will be null return default(TView); } } } // 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
- CallbackTimeoutsBehavior.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- CompositeCollectionView.cs
- DBCommand.cs
- EnumerableWrapperWeakToStrong.cs
- TypeGenericEnumerableViewSchema.cs
- SymbolMethod.cs
- XmlSchemaDatatype.cs
- BaseConfigurationRecord.cs
- CqlErrorHelper.cs
- listviewsubitemcollectioneditor.cs
- EnumValidator.cs
- OperationAbortedException.cs
- MenuBase.cs
- SinglePageViewer.cs
- SQLResource.cs
- ReliabilityContractAttribute.cs
- ChannelPoolSettings.cs
- SecurityTokenAuthenticator.cs
- CurrencyManager.cs
- SdlChannelSink.cs
- COM2IProvidePropertyBuilderHandler.cs
- XmlSerializableReader.cs
- Convert.cs
- MultipartContentParser.cs
- IItemContainerGenerator.cs
- Unit.cs
- Int16Storage.cs
- HostVisual.cs
- InkCanvas.cs
- sqlinternaltransaction.cs
- NegotiateStream.cs
- XsltLoader.cs
- DesignerActionUIStateChangeEventArgs.cs
- XmlSchemaProviderAttribute.cs
- SqlBulkCopy.cs
- TypefaceMetricsCache.cs
- DrawingAttributes.cs
- RepeaterItem.cs
- MulticastDelegate.cs
- ResourcePropertyMemberCodeDomSerializer.cs
- HMACSHA256.cs
- bidPrivateBase.cs
- RSAOAEPKeyExchangeDeformatter.cs
- RawStylusInputCustomDataList.cs
- HtmlWindow.cs
- ModifierKeysConverter.cs
- DataTableExtensions.cs
- SmtpFailedRecipientException.cs
- ChannelSinkStacks.cs
- GridViewUpdateEventArgs.cs
- EntityCollection.cs
- BitmapFrameEncode.cs
- ZipIOModeEnforcingStream.cs
- DtcInterfaces.cs
- _emptywebproxy.cs
- EntityModelSchemaGenerator.cs
- ContextStaticAttribute.cs
- CodeTypeConstructor.cs
- BitmapEffectState.cs
- WebPartZoneBaseDesigner.cs
- Parser.cs
- SynchronizationContext.cs
- PinnedBufferMemoryStream.cs
- SafeFileHandle.cs
- BooleanSwitch.cs
- NetworkInterface.cs
- DeferredTextReference.cs
- HttpRuntime.cs
- BufferedReadStream.cs
- TreeNode.cs
- InternalBufferOverflowException.cs
- ParallelEnumerable.cs
- User.cs
- LinqDataSourceDisposeEventArgs.cs
- AttachedPropertyDescriptor.cs
- DataGridViewImageCell.cs
- IconConverter.cs
- ArrangedElement.cs
- GACMembershipCondition.cs
- DBDataPermission.cs
- Line.cs
- TemplateBuilder.cs
- ProcessHostConfigUtils.cs
- querybuilder.cs
- HtmlTableCell.cs
- ReverseInheritProperty.cs
- _SpnDictionary.cs
- MobilePage.cs
- SelfSignedCertificate.cs
- StrokeIntersection.cs
- BinaryEditor.cs
- Graphics.cs
- PropertyNames.cs
- LinkArea.cs
- IFlowDocumentViewer.cs
- ArcSegment.cs
- AdornerDecorator.cs
- SectionInput.cs
- TemplateBindingExtension.cs