У меня есть метод утилиты сериализации, который в качестве одного из параметров принимает List<Type>
в качестве одного из параметров.
Когда я проектирую класс, который я собираюсь использовать с этим методом, я необходимо знать, какие типы я использую, и все другие типы, которые могут использовать типы, которые я могу использовать.
Например, представьте, что у меня есть 3 класса:
public class Foo
{
// some members
}
public class Bar : Foo
{
// additional members
}
public class Barf
{
// more members
public Bar item { get; set; }
}
Я хочу взять на себя ответственность знать обо всех последующих типах, которые Барф может использовать из Барфа и на их нисходящие нисходящие потоки (то есть я знаю о «Бар», но, возможно, не знаю о «Фу»). Или, возможно, я изменяю изменение наследования, где Bar : Foo1
и Foo1 : Foo
.
Если бы каждый класс отвечал за то, чтобы знать, каковы его собственные составные типы, тогда я могу локализовать любые изменения без необходимости go изменять какие-либо вышестоящие классы.
Изначально я думал о создании интерфейса stati c, где каждый класс определял свои известные типы, но, увы, он мне недоступен. Поэтому вопрос заключается в том, как реализовать проект, в котором я могу передать тип в метод, и каждый тип знает, какие встроенные типы они используют (нет необходимости спускать / перечислять «родные» типы), и это определение List<Type>
может быть рекурсивно спущен ....