Здравствуйте, Аноним, Вы писали:
А>В метод, создающий экземпляр класса передаётся переменная типа Type, Вот сигнатура А>
А> public MyObject CreateObject(Type t)
А> {
А> }
А>
А>Я хочу чтобы передавался Type, полученный только для тех классов, которые производны от MyObject. Можно ли сделать такое? В Дельфи есть конструкции class of... А в C# 2.0 как?
наверное, как-то так if(t.BaseType == typeof(MyObject)) ....
А>Я хочу чтобы передавался Type, полученный только для тех классов, которые производны от MyObject. Можно ли сделать такое? В Дельфи есть конструкции class of... А в C# 2.0 как?
public MyObject CreateObject(Type t)
{
if(!t.IsSubclassOf(typeof(MyObject)) && !i.Equals(typeof(MyObject))
throw new ArgumentException("Bad type");
}
В метод, создающий экземпляр класса передаётся переменная типа Type, Вот сигнатура
public MyObject CreateObject(Type t)
{
}
Я хочу чтобы передавался Type, полученный только для тех классов, которые производны от MyObject. Можно ли сделать такое? В Дельфи есть конструкции class of... А в C# 2.0 как?
Здравствуйте, Аноним, Вы писали:
А>В метод, создающий экземпляр класса передаётся переменная типа Type, Вот сигнатура А>
А> public MyObject CreateObject(Type t)
А> {
А> }
А>
А>Я хочу чтобы передавался Type, полученный только для тех классов, которые производны от MyObject. Можно ли сделать такое? В Дельфи есть конструкции class of... А в C# 2.0 как?
А>Я хочу чтобы передавался Type, полученный только для тех классов, которые производны от MyObject. Можно ли сделать такое? В Дельфи есть конструкции class of... А в C# 2.0 как?
Здравствуйте, Igor Trofimov, Вы писали:
А>>Я хочу чтобы передавался Type, полученный только для тех классов, которые производны от MyObject. Можно ли сделать такое? В Дельфи есть конструкции class of... А в C# 2.0 как?
iT>Никак. Только в рантайме.
Здравствуйте, Igor Trofimov, Вы писали:
iT>>>Никак. Только в рантайме.
МЗ>>Уже писали, что через generic
iT>Это не равнозначная замена. Как будешь вызывать этот generic-метод с значением параметра, известным только в runtime?
Мда
А как изменить сигнатуру, чтобы во время компиляции отслеживалось?
iT>>Это не равнозначная замена. Как будешь вызывать этот generic-метод с значением параметра, известным только в runtime? МЗ>Мда МЗ>
А как изменить сигнатуру, чтобы во время компиляции отслеживалось?
Это понятно. Но из того, что человек не написал, что он будет передавать в этот метод параметры в рантайме, еще не следует, что он этого делать не будет
Как ни крути, но generic-вариант разруливает одно, ограничивая другое. Ergo, это не равноценная замена.
Здравствуйте, Igor Trofimov, Вы писали:
iT>Это понятно. Но из того, что человек не написал, что он будет передавать в этот метод параметры в рантайме, еще не следует, что он этого делать не будет
iT>Как ни крути, но generic-вариант разруливает одно, ограничивая другое. Ergo, это не равноценная замена.
но это еще не значит, что сделать этого нельзя.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.