Ввести. GetType (“namespace.a.b. ClassName”), возвращает пустой указатель

Открытый и набор фокусируются в Проводник Решения : Ctrl + Высокий звук + L

198
задан abatishchev 22 July 2015 в 05:32
поделиться

4 ответа

Type.GetType ("namespace.qualified.TypeName") работает только тогда, когда тип найден либо в mscorlib.dll, либо в выполняющейся в данный момент сборке.

Если ни один из них все верно, вам понадобится имя с указанием сборки :

Type.GetType("namespace.qualified.TypeName, Assembly.Name")
218
ответ дан 23 November 2019 в 05:10
поделиться

Если на сборку есть ссылка и класс виден:

typeof(namespace.a.b.ClassName)

GetType возвращает null, потому что тип не найден, с помощью typeof компилятор может помочь вам найти ошибку.

4
ответ дан 23 November 2019 в 05:10
поделиться

Если это вложенный тип, вы можете забыть преобразовать файл. на +

Несмотря на это, typeof (T) .FullName скажет вам, что вы должны сказать

EDIT: Кстати, использование (как я ' m, конечно, вы знаете) являются только директивами для компилятора во время компиляции и поэтому не могут повлиять на успешность вызова API. (Если у вас есть ссылки на проект или сборку, это потенциально могло иметь влияние - следовательно, информация бесполезна, она просто требует некоторой фильтрации ...)

8
ответ дан 23 November 2019 в 05:10
поделиться
Dictionary<string, Type> typeCache;
...
public static bool TryFindType(string typeName, out Type t) {
    lock (typeCache) {
        if (!typeCache.TryGetValue(typeName, out t)) {
            foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies()) {
                t = a.GetType(typeName);
                if (t != null)
                    break;
            }
            typeCache[typeName] = t; // perhaps null
        }
    }
    return t != null;
}
25
ответ дан 23 November 2019 в 05:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: