У меня следующая ситуация ниже. Этот код выдаст ошибку компилятора для Test2
Тип «InheritedChild» нельзя использовать в качестве параметра типа «T» в универсальном типе или методе «panelGenericIOGrid». Не существует неявного преобразования ссылок из InheritedChild в SerializerBase.
public class SerializerBase<T>
{
}
public class DirectChild : SerializerBase<DirectChild>
{
}
public class InheritedChild : DirectChild
{
}
public class panelGenericIOGrid<T> : UserControl
where T: SerializerBase<T>, new()
{
}
...
panelGenericIOGrid<DirectChild> test;
panelGenericIOGrid<InheritedChild> test2;
...
Я почти уверен, что моя имплантация в корне неверна. Я хочу, чтобы в следующей ситуации DirectChild и InheritedChild передавали свой тип присвоения конструктору SerializerBase.
Как мне заставить код работать так, как ему нужно? Спасибо!
Некоторая информация о актуальной информации. SerializerBase имеет набор статических функций, которые реализованы для автоматической сериализации и десериализации себя в зависимости от их типа.
DirectChild имеет набор строк, которые будут сохранены на диске и восстановлены.
В Inhertiedchild есть все члены DirectChild плюс еще.
В основном мне понадобятся DirectChild.Serialize (имя файла) и IndirectChild.Serialize (имя файла), где Serialize является открытым членом SerializeBase