Лучший способ получить объект типа из строки в .NET

StackOverflow https://stackoverflow.com/questions/608332

Вопрос

Каков наилучший способ преобразовать строку в объект типа в .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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top