Здравствуйте, Аноним, Вы писали:
А>Добрый день,Господа!
А>У меня есть базовый класс
А>А>public abstract class MyBase<T>
А>{
А>protected T _currentObject;
А>T CurrentObject
А>{
А> get
А> {
А> return _currentObject;
А> }
А>}
А>//... остальные поля не важны
А>}
А>
А>у меня также ест дочерние классы , один из них
А>А>public class InhClass<T>:MyBase<T> where T : FieldInfo
А>{
А>public InhClass(T obj)
А>{
А>_currentObject = obj;
А>}
А>//... остальные поля не важны
А>}
А>
А>вот собственно вопрос :
А>у меня дочерних классов может быть много, и везде мне придется писать громоздкую конструкцию типа
А>А>public class InhClass<T>:MyBase<T> where T : Type
А>
А>правильно ли это, все классы обобщает то что мне нужно от них получить CurrentObject,но он может быть разного типа,от того эти извращения, может как нибудь проще можно.
А>Более простым способом вынести T CurrentObject в базовый класс, при этом не городить огороды в дочерних ?
А>Спасибо за советы!
Не понятно, для чего наследный класс тоже шаблон? Вы четко указываете, что T — FieldInfo, так почему бы не написать так:
public class InhClass: MyBase<FieldInfo>
{
public InhClass(FieldInfo obj)
{
_currentObject = obj;
}
//... остальные поля не важны
}
или у вас есть наследники от FieldInfo и вы планируете использовать их в InhClass?
Лучше бы вы описали вашу задачу (без привязки к классам), возможно она имеет другое, более эффективное решение.