He creado este método, que es una factoría de objetos:Creación método genérico y el uso de parámetro de tipo
public static T GetService<T>(T serviceInterface)
{
if (serviceInterface.Equals(typeof(IMemberService)))
{
return (T)(object)new MemberService();
}
else if (serviceInterface.Equals(typeof(ILookupService)))
{
return (T)(object)new LookupService();
}
throw new ArgumentOutOfRangeException("No action is defined for service interface " + serviceInterface.Name);
}
Ahora, me gustaría ir más allá y eliminar la necesidad de parámetro "ServiceInterface", pero mi problema es - no sé cómo comparar parámetro de tipo T a una interfaz: hacer
T.Equals(typeof(ILookupService))
da error del compilador: 'T' es un 'parámetro de tipo', que no es válida en el contexto dado.
¿Alguna idea de cómo podría comparar un parámetro de tipo a una interfaz?
Gracias, Andrey
Usted puede escoger el valor de la variable de ServiceInterface como este -> https://stackoverflow.com/a/44114122/1580548 – ddagsan