Code:
/ 4.0 / 4.0 / 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. // ==++== // // 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
- HttpProxyCredentialType.cs
- PointUtil.cs
- RawTextInputReport.cs
- EntryWrittenEventArgs.cs
- SendingRequestEventArgs.cs
- CustomErrorsSectionWrapper.cs
- ByeMessageApril2005.cs
- TextOutput.cs
- MetadataLocation.cs
- AuthenticatingEventArgs.cs
- ArgumentException.cs
- RootDesignerSerializerAttribute.cs
- PageSetupDialog.cs
- AmbientEnvironment.cs
- ExpressionContext.cs
- ActivityStateRecord.cs
- DocumentViewer.cs
- MouseActionValueSerializer.cs
- XmlExtensionFunction.cs
- RoutedEventValueSerializer.cs
- FontStyle.cs
- PeerName.cs
- FormViewRow.cs
- ResXDataNode.cs
- ToolStripInSituService.cs
- ObjectIDGenerator.cs
- LayoutEditorPart.cs
- DataFormats.cs
- TrustLevel.cs
- ListItemCollection.cs
- TextRangeAdaptor.cs
- SystemWebSectionGroup.cs
- Component.cs
- ExtensionSurface.cs
- IdentityReference.cs
- Int32KeyFrameCollection.cs
- StorageModelBuildProvider.cs
- DataServiceClientException.cs
- _UriTypeConverter.cs
- PropertySet.cs
- InkCanvasInnerCanvas.cs
- WindowsFormsSectionHandler.cs
- IPPacketInformation.cs
- LingerOption.cs
- ComponentChangingEvent.cs
- SecurityListenerSettingsLifetimeManager.cs
- SubclassTypeValidatorAttribute.cs
- DocumentPage.cs
- CodeTypeReferenceExpression.cs
- XmlValidatingReader.cs
- WebPartTransformer.cs
- SqlDataRecord.cs
- EventListener.cs
- XmlHelper.cs
- DetailsViewModeEventArgs.cs
- VectorKeyFrameCollection.cs
- EntityDataSourceMemberPath.cs
- ListViewGroupItemCollection.cs
- HashFinalRequest.cs
- MeshGeometry3D.cs
- DataGridViewCellParsingEventArgs.cs
- ConditionalAttribute.cs
- XmlSiteMapProvider.cs
- Propagator.Evaluator.cs
- BufferedMessageWriter.cs
- DataBoundControlHelper.cs
- MenuAutomationPeer.cs
- DataGridHeaderBorder.cs
- HyperLinkColumn.cs
- ResourceWriter.cs
- WmfPlaceableFileHeader.cs
- XmlCDATASection.cs
- ClientScriptManagerWrapper.cs
- MessageEnumerator.cs
- XslAstAnalyzer.cs
- WebControl.cs
- HttpConfigurationContext.cs
- UserControl.cs
- XmlHierarchyData.cs
- ACE.cs
- _FixedSizeReader.cs
- KeyNotFoundException.cs
- SqlPersonalizationProvider.cs
- _AcceptOverlappedAsyncResult.cs
- Hyperlink.cs
- WebRequestModuleElementCollection.cs
- XPathExpr.cs
- Transform3DCollection.cs
- FontWeight.cs
- TextEditorCharacters.cs
- RectangleF.cs
- IIS7WorkerRequest.cs
- NegatedCellConstant.cs
- DeflateStreamAsyncResult.cs
- RemoteX509Token.cs
- XmlCharacterData.cs
- WebBrowserUriTypeConverter.cs
- ListViewCancelEventArgs.cs
- ConfigurationPropertyAttribute.cs
- TypeDescriptionProvider.cs