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
- ControlTemplate.cs
- _UncName.cs
- HostProtectionPermission.cs
- BinHexEncoder.cs
- PieceDirectory.cs
- ScriptModule.cs
- FlowDocumentView.cs
- SafeViewOfFileHandle.cs
- DragAssistanceManager.cs
- ValidatorCompatibilityHelper.cs
- DbQueryCommandTree.cs
- ReadingWritingEntityEventArgs.cs
- PersonalizableTypeEntry.cs
- SnapLine.cs
- VectorCollectionValueSerializer.cs
- AttributeExtensions.cs
- NumberFormatter.cs
- XmlTextWriter.cs
- SqlDependencyListener.cs
- DataGridViewCheckBoxCell.cs
- ComponentCache.cs
- Native.cs
- RowParagraph.cs
- FormViewUpdatedEventArgs.cs
- XmlWriter.cs
- SyntaxCheck.cs
- Emitter.cs
- StoreItemCollection.cs
- ClientSettingsSection.cs
- XmlCollation.cs
- CustomBinding.cs
- ResourcePermissionBaseEntry.cs
- ComponentEvent.cs
- InstanceLockQueryResult.cs
- ConstraintEnumerator.cs
- XmlAnyElementAttributes.cs
- safePerfProviderHandle.cs
- DetailsView.cs
- UnsafeNativeMethods.cs
- DataViewManager.cs
- ToolStripLocationCancelEventArgs.cs
- AlphabeticalEnumConverter.cs
- MemberAccessException.cs
- DelegatingTypeDescriptionProvider.cs
- CodeIndexerExpression.cs
- Margins.cs
- DataGridViewColumnEventArgs.cs
- Trigger.cs
- ViewStateChangedEventArgs.cs
- CommunicationObjectManager.cs
- ConnectionStringsExpressionEditor.cs
- SpeechRecognizer.cs
- GPPOINTF.cs
- HttpModuleAction.cs
- Italic.cs
- LiteralTextContainerControlBuilder.cs
- FixedNode.cs
- WebPartEditorOkVerb.cs
- SimpleType.cs
- WebCategoryAttribute.cs
- SafeEventLogWriteHandle.cs
- BitSet.cs
- OleDbStruct.cs
- AutomationEvent.cs
- BuildResultCache.cs
- XmlSecureResolver.cs
- FaultPropagationQuery.cs
- TdsParameterSetter.cs
- ChannelReliableSession.cs
- MenuItem.cs
- BinaryCommonClasses.cs
- PathParser.cs
- XmlSecureResolver.cs
- ObjectDataSourceMethodEventArgs.cs
- WorkingDirectoryEditor.cs
- Int32AnimationUsingKeyFrames.cs
- NativeMethods.cs
- DrawItemEvent.cs
- SemanticBasicElement.cs
- BitmapPalettes.cs
- PropertySourceInfo.cs
- SqlNotificationRequest.cs
- LoginNameDesigner.cs
- DbProviderFactoriesConfigurationHandler.cs
- RouteParametersHelper.cs
- SectionUpdates.cs
- RemoteCryptoSignHashRequest.cs
- LambdaCompiler.Address.cs
- Restrictions.cs
- PtsHost.cs
- DateTimeFormatInfo.cs
- ToolStripPanelCell.cs
- SubpageParaClient.cs
- ProfilePropertySettings.cs
- ConfigurationManager.cs
- RegexStringValidator.cs
- WebPartManagerInternals.cs
- SystemColors.cs
- AssociativeAggregationOperator.cs
- RecordConverter.cs