Melhor maneira de obter um objeto Type de uma string em .NET
-
03-07-2019 - |
Pergunta
Qual é a melhor maneira de converter uma string em um objeto Type em .NET?
As questões a considerar:
- O tipo pode estar em uma montagem diferente.
- O tipo é de montagem não pode ser carregado ainda.
Esta é minha tentativa, mas não aborda a segunda edição
Public Function FindType(ByVal name As String) As Type
Dim base As Type
base = Reflection.Assembly.GetEntryAssembly.GetType(name, False, True)
If base IsNot Nothing Then Return base
base = Reflection.Assembly.GetExecutingAssembly.GetType(name, False, True)
If base IsNot Nothing Then Return base
For Each assembly As Reflection.Assembly In _
AppDomain.CurrentDomain.GetAssemblies
base = assembly.GetType(name, False, True)
If base IsNot Nothing Then Return base
Next
Return Nothing
End Function
Solução
que você pode precisar chamar GetReferencedAssemblies () para o segundo.
namespace reflectme
{
using System;
public class hello
{
public hello()
{
Console.WriteLine("hello");
Console.ReadLine();
}
static void Main(string[] args)
{
Type t = System.Reflection.Assembly.GetExecutingAssembly().GetType("reflectme.hello");
t.GetConstructor(System.Type.EmptyTypes).Invoke(null);
}
}
}
Outras dicas
Você pode usar Type.GetType (string) , a fim de faça isso. O nome do tipo de montagem tem de ser qualificado, mas o método irá carregar o conjunto, se necessário. A qualificação de montagem não é necessário se o tipo está em mscorlid ou a montagem que executa a chamada GetType.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow