Laden...

Type by Name (String)

Erstellt von Tarion vor 13 Jahren Letzter Beitrag vor 13 Jahren 916 Views
T
Tarion Themenstarter:in
381 Beiträge seit 2009
vor 13 Jahren
Type by Name (String)

Ich habe Strings und will wissen ob diese einen Type beschreiben.


typeName = "String";
Type type = null;

foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies())
{
    type = a.GetType(typeName, false);
    if (type != null)
    {
        break;
    }
}

if (type == null)
{
    type = Type.GetType(typeName, false);
}

// type ist null :(

Wie kann es sein, dass type immer null ist. Er findet einfach nicht den Type String. Gibt es da irgend eine Besonderheit zu beachten?

3.971 Beiträge seit 2006
vor 13 Jahren

Wie wärs mit dem Namespace?


typeName = "System.String";

sollte helfen.

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

2.891 Beiträge seit 2004
vor 13 Jahren

Was man auch ganz leicht durch die Doku herausfindet:

Zitat von: Assembly.GetType-Methode (String) (System.Reflection)
Parameter "name": [...] Der vollständige Name des Typs. [...]
Der name-Parameter schließt den Namespace, aber nicht die Assembly ein.

T
Tarion Themenstarter:in
381 Beiträge seit 2009
vor 13 Jahren

Für nicht system typen, also eigene Klassen, funktioniert die andere Methode aber einwandfrei.

849 Beiträge seit 2006
vor 13 Jahren

Hmm komisch.. machst Du vllt noch irgendwas anders?


namespace ConsoleApplication1
{
    class Program
    {
        public static object lockobject = new object();

        static void Main(string[] args)
        {
            var x = Type.GetType("Test"); // geht nicht
            var y = Type.GetType("ConsoleApplication1.Test"); //geht
            var z = System.Reflection.Assembly.GetExecutingAssembly().GetType("Test"); // geht nicht
            var a = System.Reflection.Assembly.GetExecutingAssembly().GetType("ConsoleApplication1.Test"); // geht 
        }
    }

    public class Test
    {
    }
}

edit: Ok.. Wenn man namespaces komplett weg lässt fluppts

T
Tarion Themenstarter:in
381 Beiträge seit 2009
vor 13 Jahren

Ich hab ein wenig Fremdcode bei dem ich dachte, dass er es genau so macht. Ich werde das nochmal genauer prüfen grübel Ich meldem ich dann 😃