using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace ActivatorSample{ class Program { static void Main(string[] args) { string typename = "OtroNamespace.Proveedor1"; if (args.Length > 0) { typename = args[ 0]; } ProcessType( typename); Console.ReadLine(); } private static void ProcessType(string typename) { Type tipo = Type.GetType(typename); if (typeof(ProveedorPadre).IsAssignableFrom(tipo)) { ProveedorPadre director = (ProveedorPadre)Activator.CreateInstance(tipo); director.HacerAlgo<int>(1); director.HacerAlgo<string>("parametros"); director.HacerAlgo<DateTime>(DateTime.Now); } else { throw new InvalidOperationException("No implementa ProveedorPadre"); } } } public abstract class ProveedorPadre { public abstract void HacerAlgo<T>(T indata); } } namespace OtroNamespace{ public class Proveedor1 : ActivatorSample.ProveedorPadre { public override void HacerAlgo<T>(T indata) { Console.WriteLine( "Se ha recibido en Proveedor 1 el dato: {0}",indata.ToString()); } } public class Proveedor2 { public Proveedor2() { //Sencillamente no hereda de ProveedorPadre! } } }
|