Сейчас я могу представить себе один случай, когда вы хотите использовать отражение и спросить, можно ли назначить тип из другого типа.
Например, плагины;
, когда вы хотите объявить переменную, вы должныопределите тип этой переменной.
SomeType variableName;
Тогда задайте вопрос ... какой тип экземпляра вы можете назначить этой variableName
переменной?
Ответ: просто экземпляр типа, производный от SomeType
type.
Теперь более реальный пример:
Color variableName;
Int32 myInt;
Тогда у меня возникает вопрос: variableName
назначается из myInt
переменная?
Ответ: НЕТ
теперь, если вы используете рефлексию.Это довольно просто.
Другой возможный способ:
// left side of assignment = right side of assignment;
typeof({type of variable on the left side of assignment}).IsAssignableFrom(typeof({type of variable on the right side of assignment}))
А про плагины я уже упоминал.Обычно вы можете попытаться найти все сборки и выполнить цикл, подобный следующему ::1010*
- для каждой сборки получите все типы -> отфильтруйте все типы, которые не реализуют конкретный контракт (тип).
Итак, вы можете иметь
When my type 't' is implementing my 'contract type / interface' i want to instantiate it
and then is question
Is my 'contract / interface ' assignable from discovered type 't' ?
and again we have left and right side and result
typeof(my contract interface ).IsAssignableFrom(typeof( discovered type 't'))