Question

Quel est le meilleur moyen de convertir une chaîne en objet Type dans .NET?

Points à prendre en compte:

  • Le type peut être dans un assemblage différent.
  • L'assemblage du type n'est peut-être pas encore chargé.

C’est ma tentative, mais cela ne règle pas le deuxième problème

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
Était-ce utile?

La solution

vous devrez peut-être appeler la méthode GetReferencedAssemblies () pour la seconde.

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

Autres conseils

Vous pouvez utiliser Type.GetType (chaîne) pour fais ça. Le nom du type doit être qualifié d'assemblage, mais la méthode chargera l'assembly si nécessaire. La qualification d'assembly n'est pas nécessaire si le type est dans mscorlid ou l'assembly qui exécute l'appel GetType.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top