Мой первоначальный вопрос должен был быть в основном идентичен Тип привязки к конкретным типам .
То, чего я хочу достичь, это, в основном, это.
public List<Type> MyPublicProperty { get; set; } where T IMyCustomInterface
Теперь, читая вышеупомянутый вопрос, я вижу, что это, очевидно, невозможно.
Чтобы дать вам представление о контексте, я создаю синтаксический анализатор, предназначенный для поддержки нескольких типов (при условии, что они реализуют определенный интерфейс), но я не делаю предположений о типах компиляции о том, какие типы данных он может анализировать. Он просто должен быть снабжен списком поддерживаемых типов и должен уметь автоматически обрабатывать остальные.
Так что в основном меня интересует, какова альтернатива (помимо проверки типа во время выполнения, когда свойство установлено) для такого свойства (если оно существует)?
РЕДАКТИРОВАТЬ: предлагаемое решение не работает.
Я получаю код, который выглядит следующим образом:
public class CustomSerializableTypeList<T> : List<T> where T : ITcpSerializable
{
}
CustomSerializableTypeList<Type> myCustomTypes = new CustomSerializableTypeList<Type>();
И получите следующую ошибку:
Тип «System.Type» не может быть использован
как параметр типа 'T' в общем
тип или метод
'CustomSerializableTypeList. Там
нет неявного преобразования ссылок
от 'System.Type' к
'ITcpSerializable'.
Ошибка имеет смысл, когда я смотрю и думаю о предложенной обобщенной реализации.
Должен быть способ обойти это.