Как я могу проверить / оценить точный тип T без объект для 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;
}
}
Я просто хочу иметь что-то подобное на клиенте.
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());
}
Заметьте, что я на самом деле не создал фактический объект для Казино и Аптеки, когда вызываю BusinessManager, я просто передаю его как ограничение общего типа для класса. Мне просто нужно точно знать, какой тип я передаю в BusinessManager, чтобы знать , какой именно тип нужно создать . Спасибо ...
PS: Я не хочу создавать отдельный BusinessManager для казино и аптек ..
Вы также можете прокомментировать дизайн .. спасибо ..
ДОПОЛНИТЕЛЬНО: а что, если класс Casino а DrugStore - это АБСТРАКТНЫЙ КЛАСС =)