requiere - parametros de tipo c#
Tipo genérico en constructor (1)
No puede hacer que los constructores sean genéricos, pero puede usar un método genérico estático en su lugar:
public static Constructor CreateInstance<T>(int blah, IGenericType<T> instance)
y luego haga lo que necesite después del constructor, si es necesario. Otra alternativa en algunos casos podría ser introducir una interfaz no genérica que amplíe la interfaz genérica.
EDITAR: según los comentarios ...
Si desea guardar el argumento en el objeto recién creado, y desea hacerlo de una manera fuertemente tipada, entonces el tipo también debe ser genérico.
En ese punto, el problema del constructor desaparece, pero es posible que desee mantener un método genérico estático de todos modos en un tipo no genérico: para que pueda aprovechar la inferencia de tipo:
public static class Foo
{
public static Foo<T> CreateInstance<T>(IGenericType<T> instance)
{
return new Foo<T>(instance);
}
}
public class Foo<T>
{
public Foo(IGenericType<T> instance)
{
// Whatever
}
}
...
IGenericType<string> x = new GenericType<string>();
Foo<string> noInference = new Foo<string>(x);
Foo<string> withInference = Foo.CreateInstance(x);
Tengo una interfaz de tipo genérico y quiero un constructor de un objeto para tomar en la interfaz genérica.
Me gusta:
public Constructor(int blah, IGenericType<T> instance)
{}
Quiero que el código que crea este objeto especifique IGenericType (use Inversion of Control). No he visto una manera de que esto suceda. Alguna sugerencia para lograr esto?
Quiero que alguien cree el objeto como:
Constructor varname = new Constructor(1, new GenericType<int>());