En C#, una cadena que contiene el nombre de tipo se puede convertir al objeto de tipo correspondiente. Sin embargo, el método utilizado para esta conversión depende de si el tipo se define en el mismo ensamblaje que el código de llamadas, o en un ensamblaje diferente.
type.gettype (string)
Si el tipo se define en el mismo ensamblaje, puede usar el método type.gettype (string)
y proporcionar un nombre de tipo completamente calificado como una cadena. Por ejemplo, para obtener el tipo type
del tipo de datos int
, puede usar:
Type.GetType("System.Int32");
]]
ensamblaje.gettype (string)
Si el tipo se define en un ensamblaje diferente, también debe proporcionar el nombre del ensamblaje. Se puede implementar utilizando el método ensamblaje.gettype (string)
. Primero, obtenga una referencia al ensamblaje y luego use esa referencia para obtener type
:
Assembly asm = typeof(SomeKnownType).Assembly;
Type type = asm.GetType("Namespace.MyClass");
asegúrese de que el espacio de nombres de tipo esté incluido en la cadena proporcionada a type.gettype ()
o ensamblaje.gettype ()
. Además, para las asambleas fuertemente nombradas, puede ser necesario incluir identidad de ensamblaje completa, incluida la versión, la cultura y las etiquetas de clave pública.
Considere el siguiente escenario donde una cadena contiene un nombre completamente calificado del tipo:
string typeName = "Namespace.MyClass, MyAssembly";
]
dependiendo de si myassembly
se hace referencia por el ensamblaje llamado, puede usar type.gettype ()
o ensamblaje.gettype ()
:
// 如果 MyAssembly 被引用
Type type1 = Type.GetType(typeName);
// 如果 MyAssembly 未被引用
Assembly asm = typeof(SomeKnownType).Assembly;
Type type2 = asm.GetType(typeName);
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3