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
- PropertyGridEditorPart.cs
- MenuItemStyleCollection.cs
- PropVariant.cs
- Line.cs
- _StreamFramer.cs
- AnimationTimeline.cs
- PolicyLevel.cs
- NativeMethods.cs
- StatusBar.cs
- TextSpan.cs
- HitTestFilterBehavior.cs
- ProvidePropertyAttribute.cs
- XmlQueryCardinality.cs
- _NativeSSPI.cs
- WpfWebRequestHelper.cs
- SqlInternalConnectionTds.cs
- LingerOption.cs
- MemberAssignmentAnalysis.cs
- StringAnimationBase.cs
- ToolStripSplitButton.cs
- DragDropHelper.cs
- Evidence.cs
- AppDomainProtocolHandler.cs
- SpellerStatusTable.cs
- Image.cs
- ArrayWithOffset.cs
- DataPointer.cs
- WindowsToolbarAsMenu.cs
- SqlReferenceCollection.cs
- ContractMapping.cs
- JavaScriptSerializer.cs
- IProvider.cs
- AppAction.cs
- GridEntryCollection.cs
- ListItemConverter.cs
- UnsafeNativeMethodsTablet.cs
- XslException.cs
- ParameterRetriever.cs
- HeaderCollection.cs
- IApplicationTrustManager.cs
- ScaleTransform.cs
- NonParentingControl.cs
- NativeMethodsOther.cs
- ConnectionPoolManager.cs
- RequestResizeEvent.cs
- ComEventsHelper.cs
- DragDrop.cs
- SessionEndingCancelEventArgs.cs
- unsafenativemethodsother.cs
- TextEditorLists.cs
- PeerTransportListenAddressValidator.cs
- ParseElement.cs
- Walker.cs
- InputScopeAttribute.cs
- RequestSecurityTokenSerializer.cs
- RealProxy.cs
- XmlArrayItemAttribute.cs
- SqlDataSourceCache.cs
- WrapPanel.cs
- HostVisual.cs
- WindowPattern.cs
- EndPoint.cs
- SettingsAttributeDictionary.cs
- SolidColorBrush.cs
- Ops.cs
- BitmapMetadata.cs
- HttpException.cs
- Cloud.cs
- HttpGetClientProtocol.cs
- AnnotationComponentChooser.cs
- XsdValidatingReader.cs
- SrgsOneOf.cs
- WebEvents.cs
- NetworkAddressChange.cs
- Transform.cs
- MessageBuilder.cs
- SafeSystemMetrics.cs
- JavaScriptString.cs
- Number.cs
- Registry.cs
- EntityConnectionStringBuilderItem.cs
- smtppermission.cs
- StreamGeometryContext.cs
- StorageAssociationTypeMapping.cs
- VolatileEnlistmentState.cs
- NavigationPropertySingletonExpression.cs
- FileVersionInfo.cs
- SqlDataSource.cs
- EventLogTraceListener.cs
- EraserBehavior.cs
- MessageDispatch.cs
- ProfileInfo.cs
- AccessDataSourceDesigner.cs
- Int64.cs
- DateTimeAutomationPeer.cs
- TableAutomationPeer.cs
- SecuritySessionClientSettings.cs
- RegexInterpreter.cs
- LayeredChannelFactory.cs
- FullTextBreakpoint.cs