Come posso verificare/valutare l'esatto tipo di T senza oggetto per T. So che la mia domanda forse confuso, ma considerare questo ...Generics Come controllare l'esatto tipo di T, senza oggetto per 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;
}
}
Voglio solo avere qualcosa di simile sul client.
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());
}
Avviso che io in realtà non ha ancora creato l'oggetto reale per il Casinò e Farmacia quando chiamo il BusinessManager, mi basta passare come tipo di vincolo generico della classe. Ho solo bisogno di sapere esattamente che tipo sto passando BusinessManager per sapere cosa esattamente il tipo di istanziare. Grazie ...
PS: Non voglio creare BusinessManager specifica separata per Casinò e Farmacia ..
Si può anche commentare il disegno .. grazie ..
COMPLEMENTARI: e cosa succede se Casino di classe e Farmacia è una classe astratta =)
hmm .. mal provate questo approccio .. – CSharpNoob
Grazie ragazzi per tutte le vostre risposte! ma ho dato il CHECK al primo che ha proposto l'approccio più appropriato .. grazie! – CSharpNoob
hey, e se classificassi Class Casino e DrugStore anche in una classe astratta, c'è una soluzione? – CSharpNoob