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?
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...
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.
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