/* O objectivo deste método é invocar o construtor de qualquer classe que seja MyClass1 ou que herde desta e que não tenha o construtor sem parâmetros porque, para isso, bastaria usar além do where a keyword new, ex: where T : ... new() */
public T myGenericMethod
System.Reflection.ConstructorInfo constructorInfo =
typeof(T).GetConstructor(new Type[] { typeof(string), typeof(int) });
T myObject =
(T)constructorInfo.Invoke(new object[] { p1, p2});
return myObject;
}
Definindo esta função genérica posso instanciar qualquer classe derivada de myClass1 que tenha um construtor com uma string e um inteiro como parâmetros. Por exemplo, supondo que existe uma classe chamada MyClass2 que herde de MyClass1:
/* exemplo de classe */
public class MyClass2 : MyClass1 { ... }
/* exemplo como usar o método */
MyClass2 exemplo =
myGenericMethod
Claro que isto não tem grandes vantagens assim à primeira vista, mas podemos centralizar operações criando o conceito de Factory.
Sem comentários:
Enviar um comentário