MonikerBuilder.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / ComIntegration / MonikerBuilder.cs / 1 / MonikerBuilder.cs

                            //------------------------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------------------------
namespace System.ServiceModel.ComIntegration
{ 
     using System;
     using System.Reflection; 
     using System.Collections.Generic; 
     using System.Threading;
     using System.ServiceModel.Channels; 
      using System.Runtime.Remoting.Proxies;
     using System.Runtime.Remoting;
     using System.Runtime.Remoting.Services;
     using System.Runtime.InteropServices; 

     internal class MonikerBuilder : IProxyCreator 
     { 
          ComProxy  comProxy = null;
 

          private MonikerBuilder ()
          {
 
          }
          void IDisposable.Dispose () 
          { 

          } 

          ComProxy IProxyCreator.CreateProxy (IntPtr outer, ref Guid riid)
          {
               if ((riid != typeof (IMoniker).GUID) && (riid != typeof (IParseDisplayName).GUID)) 
                   throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidCastException(SR.GetString(SR.NoInterface, riid)));
               if (outer == IntPtr.Zero) 
               { 
                   DiagnosticUtility.DebugAssert("OuterProxy cannot be null");
 
                   throw DiagnosticUtility.ExceptionUtility.ThrowHelperInternal(false);
               }

               if (comProxy == null) 
               {
                   ServiceMonikerInternal moniker = null; 
                   try 
                   {
                        moniker = new ServiceMonikerInternal (); 
                        comProxy = ComProxy.Create  (outer, moniker, moniker);
                        return comProxy;

                   } 
                   finally
                   { 
                        if ((comProxy == null) && (moniker != null)) 
                                ((IDisposable)moniker).Dispose ();
 
                   }
               }
               else
                    return comProxy.Clone (); 
          }
 
          bool IProxyCreator.SupportsErrorInfo (ref Guid riid) 
          {
               if ((riid != typeof (IMoniker).GUID) && (riid != typeof (IParseDisplayName).GUID)) 
                    return false;
               else
                    return true;
 
          }
 
          bool IProxyCreator.SupportsDispatch () 
          {
               return false; 
          }

          bool IProxyCreator.SupportsIntrinsics ()
          { 
               return false;
          } 
 
          public static MarshalByRefObject CreateMonikerInstance ()
          { 
               IProxyCreator serviceChannelBuilder = new MonikerBuilder ();;
               IProxyManager proxyManager = new ProxyManager  (serviceChannelBuilder);
               Guid iid = typeof (IMoniker).GUID;
               IntPtr ppv = OuterProxyWrapper.CreateOuterProxyInstance (proxyManager, ref iid); 
               MarshalByRefObject ret = EnterpriseServicesHelper.WrapIUnknownWithComObject (ppv) as MarshalByRefObject;
               Marshal.Release(ppv); 
 
               return ret;
          } 


    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK