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
- ResourceDescriptionAttribute.cs
- TextRunCache.cs
- Message.cs
- DescendantOverDescendantQuery.cs
- ForwardPositionQuery.cs
- TitleStyle.cs
- DockPanel.cs
- QueryConverter.cs
- WebPartEditVerb.cs
- NestedContainer.cs
- SplitterCancelEvent.cs
- HttpApplicationFactory.cs
- KeyPullup.cs
- RectIndependentAnimationStorage.cs
- EntityDataSourceSelectedEventArgs.cs
- OleDbCommandBuilder.cs
- _UncName.cs
- CallSite.cs
- EmbeddedMailObjectsCollection.cs
- ColorContextHelper.cs
- XmlLangPropertyAttribute.cs
- OleDbFactory.cs
- DataSourceSerializationException.cs
- BufferedGraphicsManager.cs
- TypeToken.cs
- DiagnosticTrace.cs
- _OSSOCK.cs
- XamlSerializer.cs
- DBConnectionString.cs
- TextServicesProperty.cs
- ListBindingHelper.cs
- RoutingService.cs
- HttpResponse.cs
- ServicePoint.cs
- XmlArrayItemAttributes.cs
- CodeLabeledStatement.cs
- DesignerObjectListAdapter.cs
- Resources.Designer.cs
- PersonalizationProvider.cs
- PropertyDescriptorCollection.cs
- TypeExtension.cs
- ToolStripDropDownItemDesigner.cs
- ProxyWebPartManager.cs
- ProfileGroupSettings.cs
- SymmetricKey.cs
- UserUseLicenseDictionaryLoader.cs
- XmlComment.cs
- TraceHandlerErrorFormatter.cs
- LinearGradientBrush.cs
- Root.cs
- DataGridViewCellValueEventArgs.cs
- StandardCommands.cs
- _ConnectOverlappedAsyncResult.cs
- DrawListViewItemEventArgs.cs
- WebPartConnectionsConfigureVerb.cs
- InvalidDocumentContentsException.cs
- UnhandledExceptionEventArgs.cs
- DesignerDataParameter.cs
- UnsafeNetInfoNativeMethods.cs
- SqlServer2KCompatibilityCheck.cs
- baseaxisquery.cs
- DetailsViewDeletedEventArgs.cs
- HwndHost.cs
- _IPv4Address.cs
- SqlWebEventProvider.cs
- Module.cs
- WFItemsToSpacerVisibility.cs
- HttpListenerResponse.cs
- XmlSerializationReader.cs
- StrongNameKeyPair.cs
- LassoSelectionBehavior.cs
- DropShadowBitmapEffect.cs
- ParameterCollection.cs
- ObjectDataSourceDisposingEventArgs.cs
- HostedHttpContext.cs
- DataServicePagingProviderWrapper.cs
- DoubleAverageAggregationOperator.cs
- FontStyleConverter.cs
- future.cs
- InkPresenterAutomationPeer.cs
- ProcessModuleCollection.cs
- XMLSyntaxException.cs
- RSAPKCS1SignatureFormatter.cs
- BatchWriter.cs
- CodeDelegateInvokeExpression.cs
- ItemsControl.cs
- RadioButton.cs
- CustomBindingElement.cs
- _Semaphore.cs
- ClientProxyGenerator.cs
- SecurityTokenResolver.cs
- StructuralObject.cs
- ToggleProviderWrapper.cs
- StylusLogic.cs
- GroupByExpressionRewriter.cs
- ReferenceAssemblyAttribute.cs
- SafeHGlobalHandleCritical.cs
- ClientBuildManagerCallback.cs
- DateTimeValueSerializerContext.cs
- PublisherMembershipCondition.cs