Frage

Was ist der beste Weg, um eine Zeichenfolge in ein Type-Objekt in .NET?

konvertieren

Issues zu beachten:

  • Der Typ kann in einer anderen Baugruppe sein.
  • Die Montage der Typ kann noch nicht geladen werden.

Dies ist mein Versuch, aber nicht die zweite Ausgabe-Adresse

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
War es hilfreich?

Lösung

Sie müssen möglicherweise GetReferencedAssemblies () -Methode für das zweite nennen.

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);
        }
    }
}

Andere Tipps

Sie können mit Type.GetType (string) um mach das. Der Typname muss Montag qualifiziert sein, aber das Verfahren wird die Anordnung bei Bedarf laden. Die Montage Qualifikation ist nicht erforderlich, wenn der Typ in mscorlid oder der Baugruppe, die den GetType Aufruf ausführt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top