Как я могу проверить/оценить точный тип 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 - АБСТРАКТНЫЙ КЛАСС =)