Общие: Как проверить точный тип T без объекта для T

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

10
задан CSharpNoob 31 October 2010 в 18:39
поделиться