Лучший способ получить объект типа из строки в .NET
-
03-07-2019 - |
Вопрос
Каков наилучший способ преобразовать строку в объект типа в .NET?
Вопросы, требующие рассмотрения:
- Этот тип может быть в другой сборке.
- Возможно, сборка типа еще не загружена.
Это моя попытка, но она не решает вторую проблему
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
Решение
возможно, вам потребуется вызвать метод GetReferencedAssemblies() для второго.
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);
}
}
}
Другие советы
Вы можете использовать Тип.GetType(строка) для того, чтобы сделать это.Имя типа должно быть указано как assembly, но метод загрузит сборку по мере необходимости.Квалификация сборки не требуется, если тип находится в mscorlid или в сборке, которая выполняет вызов GetType.
Не связан с StackOverflow