¿Cómo puedo comprobar/Evaluar el tipo exacto de T sin un objeto para T. Sé que mi pregunta tal vez confuso, pero considere esto ...Genéricos: ¿Cómo comprobar el tipo exacto de T, sin objeto para T
public abstract class Business
{
public abstract string GetBusinessName();
}
public class Casino : Business
{
public override string GetBusinessName()
{
return "Casino Corp";
}
}
public class DrugStore : Business
{
public override string GetBusinessName()
{
return "DrugStore business";
}
}
public class BusinessManager<T> where T : Business
{
private Casino _casino;
private DrugStore _drugStore;
public string ShowBusinessName()
{
string businessName;
if (T == Casino) // Error: How can I check the type?
{
_casino = new Casino();
businessName = _casino.GetBusinessName();
}
else if (T == DrugStore) // Error: How can I check the type?
{
_drugStore = new DrugStore();
businessName = _drugStore.GetBusinessName();
}
return businessName;
}
}
Solo quiero tener algo como esto en el cliente.
protected void Page_Load(object sender, EventArgs e)
{
var businessManager = new BusinessManager<Casino>();
Response.Write(businessManager.ShowBusinessName());
businessManager = new BusinessManager<DrugStore>();
Response.Write(businessManager.ShowBusinessName());
}
Aviso que en realidad no ha creado el objeto real para el casino y Farmacia cuando llamo al BusinessManager, que sólo tiene que pasar como restricción de tipo genérico de la clase. Solo necesito saber exactamente qué tipo estoy pasando BusinessManager para saber exactamente el tipo para instanciar. Gracias ...
PD: no quiero crear BusinessManager específica separada para el casino y Farmacia ..
También puede comentar sobre el diseño .. gracias ..
ADICIONAL: y ¿y si Casino clase y DrugStore es una clase abstracta =)
hmm .. intentaré este enfoque ... – CSharpNoob
Gracias chicos por todas sus respuestas! pero le di el CHECK al primero que propuso el enfoque más apropiado ... ¡gracias! – CSharpNoob
hey, ¿y si hago una clase de abstracción en la clase Casino and DrugStore? ¿Existe alguna solución para esto? – CSharpNoob