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
- TextTreeInsertUndoUnit.cs
- ValidatingPropertiesEventArgs.cs
- VoiceChangeEventArgs.cs
- SqlTypeConverter.cs
- DefaultObjectMappingItemCollection.cs
- Configuration.cs
- Baml2006ReaderContext.cs
- TextEndOfParagraph.cs
- ListViewCommandEventArgs.cs
- ShaderEffect.cs
- UserInitiatedNavigationPermission.cs
- PixelFormatConverter.cs
- TextEditorTyping.cs
- Substitution.cs
- ConfigurationSectionGroup.cs
- UnsafeNativeMethodsCLR.cs
- Rotation3D.cs
- CompensatableTransactionScopeActivityDesigner.cs
- SafeRegistryHandle.cs
- SqlMethods.cs
- cryptoapiTransform.cs
- CriticalFinalizerObject.cs
- StorageInfo.cs
- FixedPageProcessor.cs
- DataGridViewRowCancelEventArgs.cs
- AccessDataSourceView.cs
- OleDbParameter.cs
- _NestedSingleAsyncResult.cs
- AddressAccessDeniedException.cs
- IUnknownConstantAttribute.cs
- Int16AnimationUsingKeyFrames.cs
- PropertyCollection.cs
- DataControlFieldHeaderCell.cs
- CollectionEditor.cs
- RecognizeCompletedEventArgs.cs
- ControlEvent.cs
- DateTimeStorage.cs
- ScriptRegistrationManager.cs
- VectorConverter.cs
- MenuItemBindingCollection.cs
- Effect.cs
- ItemsPanelTemplate.cs
- ResumeStoryboard.cs
- UnsafeNativeMethods.cs
- PersistenceProviderDirectory.cs
- PackageProperties.cs
- VideoDrawing.cs
- RepeatButton.cs
- BamlLocalizabilityResolver.cs
- PhysicalFontFamily.cs
- FontDialog.cs
- ApplicationSecurityInfo.cs
- SchemaImporter.cs
- InputEventArgs.cs
- ActiveXHelper.cs
- XmlConvert.cs
- SessionPageStateSection.cs
- AbstractExpressions.cs
- ClientOperationFormatterProvider.cs
- PlainXmlSerializer.cs
- SerializerProvider.cs
- XdrBuilder.cs
- Script.cs
- ConvertEvent.cs
- FormViewInsertEventArgs.cs
- DataBinder.cs
- RadialGradientBrush.cs
- UniqueIdentifierService.cs
- BindingManagerDataErrorEventArgs.cs
- HtmlProps.cs
- TextTreeTextBlock.cs
- MailSettingsSection.cs
- CodeAttachEventStatement.cs
- AssemblyCollection.cs
- EtwTrace.cs
- RowToFieldTransformer.cs
- GenericEnumerator.cs
- Rect.cs
- TemplateColumn.cs
- DataSourceExpressionCollection.cs
- DataSourceCacheDurationConverter.cs
- TypeBrowser.xaml.cs
- PathNode.cs
- _HeaderInfoTable.cs
- DataGridViewButtonCell.cs
- TableProvider.cs
- Compiler.cs
- TextEditorCharacters.cs
- IntellisenseTextBox.designer.cs
- XmlBinaryReader.cs
- XPathMultyIterator.cs
- StateItem.cs
- PopupEventArgs.cs
- SafeReadContext.cs
- Configuration.cs
- ExecutionEngineException.cs
- DataGridViewBindingCompleteEventArgs.cs
- EntitySqlQueryBuilder.cs
- GroupItem.cs
- ResourceReferenceExpression.cs