У меня есть словарь, где оба ключа и значения имеют тип Type
, как так ...Можете ли вы ограничить тип типа в родовом?
private static Dictionary<Type, Type> myDict;
То, что я пытаюсь сделать, это ограничить второй Type
для только быть типов, которые наследуют от FrameworkElement
.
Примечание Я не storying FrameworkElement
экземпляров, я пытаюсь хранить только объекты типа Type
, которые вытекают из FrameworkElement
делает следующее утверждение верно ...
var isTypeStorable = typeof(FrameworkElement).IsAssignableFrom(FooType);
Так это может быть сделано?
BTW, да, я знаю, что я могу использовать приведенное выше, чтобы выполнить проверку выполнения перед добавлением в словарь (это то, что я сейчас делаю). Мне интересно, есть ли какие-либо функции на языке, которые позволили бы мне ограничить это во время компиляции.
AFAIK нет нет. Вы можете создать специализированный словарь, переопределить методы «Добавить» и «ДобавитьRange» и выбросить, если вы получите плохой ввод, но это все равно обеспечит проверку ошибок во время выполнения. Я почти задаюсь вопросом, есть ли лучший способ сделать свою конечную цель, возможно, используя фабрику или какой-то ДИ? Можете ли вы немного рассказать о том, как используется словарь? –
Это именно то, что я сейчас делаю. Это было более просто интересно о концепции/возможности в целом как о признаке языка. – MarqueIV
Общее ограничение не помогает? что-то вроде «T: FrameworkElement» –