Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / ComIntegration / TearOffProxy.cs / 1 / TearOffProxy.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.ComIntegration { using System; using System.ServiceModel.Channels; using System.Runtime.InteropServices; using System.Runtime.Remoting.Proxies; using System.Runtime.Remoting.Messaging; using System.Runtime.Remoting.Services; using System.Runtime.Remoting; using System.Runtime.Serialization; using System.ServiceModel; using System.Reflection; using System.Collections.Generic; internal class TearOffProxy : RealProxy, IDisposable { ICreateServiceChannel serviceChannelCreator; DictionarybaseTypeToInterfaceMethod; internal TearOffProxy (ICreateServiceChannel serviceChannelCreator, Type proxiedType) : base (proxiedType) { if (serviceChannelCreator == null) { DiagnosticUtility.DebugAssert("ServiceChannelCreator cannot be null"); throw DiagnosticUtility.ExceptionUtility.ThrowHelperInternal(false); } this.serviceChannelCreator = serviceChannelCreator; baseTypeToInterfaceMethod = new Dictionary (); } public override IMessage Invoke(IMessage message) { RealProxy delegatingProxy = null; IMethodCallMessage msg = message as IMethodCallMessage; try { delegatingProxy = serviceChannelCreator.CreateChannel (); } catch (Exception e) { if (DiagnosticUtility.IsFatal(e)) throw; return new ReturnMessage (DiagnosticUtility.ExceptionUtility.ThrowHelperError (new COMException (e.GetBaseException().Message, Marshal.GetHRForException (e.GetBaseException()))), msg); } MethodBase typeMethod = msg.MethodBase; IRemotingTypeInfo typeInfo = delegatingProxy as IRemotingTypeInfo; if (typeInfo == null) { DiagnosticUtility.DebugAssert("Type Info cannot be null"); throw DiagnosticUtility.ExceptionUtility.ThrowHelperInternal(false); } if (typeInfo.CanCastTo (typeMethod.DeclaringType, null)) { IMessage msgReturned = delegatingProxy.Invoke (message); ReturnMessage returnMsg = msgReturned as ReturnMessage; if ((returnMsg == null) || (returnMsg.Exception == null)) return msgReturned; else return new ReturnMessage (DiagnosticUtility.ExceptionUtility.ThrowHelperError (new COMException (returnMsg.Exception.GetBaseException().Message, Marshal.GetHRForException (returnMsg.Exception.GetBaseException()))), msg); } else { return new ReturnMessage (DiagnosticUtility.ExceptionUtility.ThrowHelperError (new COMException (SR.GetString(SR.OperationNotFound, typeMethod.Name), HR.DISP_E_UNKNOWNNAME)), msg); } } void IDisposable.Dispose () { serviceChannelCreator = null; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BitmapImage.cs
- ElementHostPropertyMap.cs
- Aggregates.cs
- DataListItem.cs
- WebBrowserProgressChangedEventHandler.cs
- PrinterSettings.cs
- AppDomainEvidenceFactory.cs
- SqlConnectionHelper.cs
- ElementNotAvailableException.cs
- XpsManager.cs
- TextBoxDesigner.cs
- TextEditorMouse.cs
- DrawingAttributesDefaultValueFactory.cs
- WmlSelectionListAdapter.cs
- SingleResultAttribute.cs
- ObjectDataSourceDisposingEventArgs.cs
- TrackingServices.cs
- RuleInfoComparer.cs
- CodeAccessPermission.cs
- ApplicationInfo.cs
- DbModificationClause.cs
- XmlUnspecifiedAttribute.cs
- Peer.cs
- FontInfo.cs
- MaskDescriptors.cs
- DelimitedListTraceListener.cs
- NetworkStream.cs
- RemotingSurrogateSelector.cs
- ErrorTableItemStyle.cs
- TextParaLineResult.cs
- Point3DAnimationBase.cs
- Span.cs
- MobileUserControlDesigner.cs
- SecurityTokenException.cs
- SchemaConstraints.cs
- FontUnitConverter.cs
- Model3DCollection.cs
- SafeRightsManagementPubHandle.cs
- ToolStripSplitButton.cs
- RegionData.cs
- CqlBlock.cs
- HtmlElement.cs
- ResponseStream.cs
- COM2IVsPerPropertyBrowsingHandler.cs
- ImageList.cs
- UrlAuthorizationModule.cs
- ClosableStream.cs
- XPathDocument.cs
- RegistryPermission.cs
- MessageFormatterConverter.cs
- AnyReturnReader.cs
- XXXInfos.cs
- AddInToken.cs
- WorkflowTerminatedException.cs
- GridView.cs
- ErrorTableItemStyle.cs
- InertiaRotationBehavior.cs
- Crc32Helper.cs
- IndexingContentUnit.cs
- Stacktrace.cs
- BitmapEffect.cs
- PeerNameRegistration.cs
- WinInetCache.cs
- ColorConverter.cs
- PersonalizationStateInfoCollection.cs
- RoleGroupCollection.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- SpeechUI.cs
- EventDrivenDesigner.cs
- SortFieldComparer.cs
- RenderTargetBitmap.cs
- MetabaseReader.cs
- SoapFault.cs
- ObjectDataSourceMethodEventArgs.cs
- MethodBuilderInstantiation.cs
- LassoHelper.cs
- NotCondition.cs
- Stack.cs
- ObjectHandle.cs
- ToolStripRenderer.cs
- DataBindingCollectionConverter.cs
- BeginEvent.cs
- PersonalizableTypeEntry.cs
- Root.cs
- HtmlInputPassword.cs
- MDIClient.cs
- SafeProcessHandle.cs
- LineServices.cs
- TraceListeners.cs
- dtdvalidator.cs
- CreateUserWizardStep.cs
- Accessors.cs
- SoapAttributeOverrides.cs
- KnownIds.cs
- SmtpReplyReaderFactory.cs
- CommandID.cs
- DockAndAnchorLayout.cs
- WhiteSpaceTrimStringConverter.cs
- ToolstripProfessionalRenderer.cs
- FlowDocumentPage.cs