Home
Browse all 647 examples
Download all 647 examples
Download sample chapters
Reviews
Errata
Acknowledgments
Links on .NET
Paradoxal Press

Buy directly from Paradoxal Press at $33.99 (Save 43%)



Category: Programming
Level: Beginner to seasoned
900 pages
ISBN-10 097661322-0
ISBN-13 978-097661322-0
$59.99 USA
$79.99 CANADA


Listing 22-21 extracted from chapter .NET Remoting


Listing 22-20<     > Listing 22-22


This listing can be compiled with the command line:
csc.exe /out:Client.exe /target:exe Example_22_21_to_rename_Client.cs /r:Interface.dll
Errors: 0 Warnings: 0


Example_22_21_to_rename_Client.cs
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;
using System.Runtime.Remoting.Activation;
using System.Collections;

using RemotingInterfaces;

namespace RemotingClient {
   class CustomActivator {
      private static bool bInit;
      // Associating interfaces with services distants WKO.
      private static IDictionary dicoTypes;

      public static Object GetObject( Type type ) {
         if ( !bInit )
            InitdicoTypes();
         WellKnownClientTypeEntry entry = (WellKnownClientTypeEntry)
                                             dicoTypes[type];
         return Activator.GetObject( entry.ObjectType, entry.ObjectUrl );
      }

      private static void InitdicoTypes() {
         bInit = true;
         dicoTypes = new Hashtable();
         foreach WellKnownClientTypeEntry entry in
            RemotingConfiguration.GetRegisteredWellKnownClientTypes() )
               dicoTypes.Add( entry.ObjectType, entry );
      }
   }

   class Program {
      static void Main() {
         RemotingConfiguration.Configure( "Client.config"false );

         IAdder objA = (IAdder)CustomActivator.GetObject( typeof(IAdder) );
         double dA = objA.Add( 3.04.);

         IMultiplier objM = (IMultiplier)
            CustomActivator.GetObject( typeofIMultiplier ) );
         double dM = objM.Mult( 3.04.);

         // Factory design pattern for a Client Activated Object.
         IFactory factory = (IFactory)
            CustomActivator.GetObject( typeofIFactory ) );
         IDivider objD = factory.BuildNewDivider();
         double dD = objD.Div( 3.04.);
      }
   }
}	
Copyright Patrick Smacchia 2006 2007