в C#, строка, содержащая имя типа, может быть преобразована в соответствующий объект типа. Тем не менее, метод, используемый для этого преобразования, зависит от того, определяется ли тип в той же сборке, что и в вызывающем коде, или в другой сборке.
] type.gettype (string)
Если тип определен в той же сборке, вы можете использовать метод type.getType (string)
и предоставить полностью квалифицированное имя типа в качестве строки. Например, чтобы получить type
int
тип данных, вы можете использовать:
Type.GetType("System.Int32");
]]
assembly.gettype (string)
, если тип определяется в другой сборке, вам также необходимо предоставить имя сборки. Он может быть реализован с использованием метода adsembly.gettype (string)
. Сначала получите ссылку на сборку, а затем используйте эту ссылку, чтобы получить type
:
Assembly asm = typeof(SomeKnownType).Assembly;
Type type = asm.GetType("Namespace.MyClass");
]
убедитесь, что пространство имен типа включено в строку, предоставленную type.getType ()
или assembly.gettype ()
. Кроме того, для сильно названных собраний может потребоваться включить полную идентичность сборки, включая версию, культуру и теги открытого ключа.
рассмотрим следующий сценарий, в котором строка содержит полностью квалифицированное имя типа:
string typeName = "Namespace.MyClass, MyAssembly";
]
в зависимости от того, вы можете использовать myassembly
], вы можете использовать type.gettype ()
или adsembly.gettype ()
:
// 如果 MyAssembly 被引用
Type type1 = Type.GetType(typeName);
// 如果 MyAssembly 未被引用
Assembly asm = typeof(SomeKnownType).Assembly;
Type type2 = asm.GetType(typeName);
]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3