static void Main(string [] args) { Processor p = new Processor(); IProcessWithDifferentiator <int, int, First> one = p; System.Console.WriteLine("one.Process(4) = " + one.Process(4)); IProcessWithDifferentiator <double, double, Second> two = p; System.Console.WriteLine("two.Process(5.5) = " + two.Process(5.5)); System.Console.ReadLine(); }
static void Main(string [] args) { Processor p = new Processor(); // Direct conversion of first one, of course IProcess <float, float> a1 = p; System.Console.WriteLine("a1 .Process(3.3) = " + a1.Process((float)3.3)); // Conversion of differentiated class IProcessWithDifferentiator <int, int, Second> a2 = ((IProcessWithDifferentiator <int, int, Second>)p); System.Console.WriteLine("a2d.Process(4) = " + a2.Process(4)); IProcessWithDifferentiator <double, double, Third> a3 = (IProcessWithDifferentiator <double, double, Third>)p; System.Console.WriteLine("a3d.Process(5.5) = " + a3.Process(5.5)); // Conversions to undifferentiated class using ugly proxies IProcess <int, int> a2u = ((IProcessWithDifferentiator <int, int, Second>)p).ConvertToBase(); System.Console.WriteLine("a2u.Process(4) = " + a2u.Process(4)); IProcess <double, double> a3u = ((IProcessWithDifferentiator <double, double, Third>)p).ConvertToBase(); System.Console.WriteLine("a3u.Process(5.5) = " + a3u.Process(5.5)); TestProcessor q = new TestProcessor(); IProcess <int, int> b1 = q; // Direct conversion of first one, of course System.Console.WriteLine("b1 .Process(3) = " + b1.Process(3)); // Conversion of differentiated class IProcessWithDifferentiator <int, int, Second> b2d = (IProcessWithDifferentiator <int, int, Second>)q; System.Console.WriteLine("b2d.Process(4) = " + b2d.Process(4)); IProcessWithDifferentiator <int, int, Third> b3d = (IProcessWithDifferentiator <int, int, Third>)q; System.Console.WriteLine("b3d.Process(5) = " + b3d.Process(5)); // Conversions to undifferentiated class using ugly proxies IProcess <int, int> b2u = ((IProcessWithDifferentiator <int, int, Second>)q).ConvertToBase(); System.Console.WriteLine("b2u.Process(4) = " + b2u.Process(4)); IProcess <int, int> b3u = ((IProcessWithDifferentiator <int, int, Third>)q).ConvertToBase(); System.Console.WriteLine("b3u.Process(5) = " + b3u.Process(5)); System.Console.ReadLine(); }
public TP_Proxy(IProcessWithDifferentiator <TResult, TItem, TDiff> px) { _proxyTo = px; }