Создание Типа C# от полного имени

Затраты на SQL Server и Oracle не то, что далеко друг от друга, Вы знаете.

На самом деле для маленьких систем стоимость Oracle по сравнению с Вашей Любимой Свободной Базой данных между нулем (Oracle Express Edition) и not-very-big (процессор за 5 800$, бесконечный для Standard Edition Один).

Вот ссылка на возможности различных выпусков в 11 г: http://www.oracle.com/database/product_editions.html .

Объявленные цены доступны для всех территорий в http://store.oracle.com - обычно крупные компании не платят розничную продажу, конечно, ;)

15
задан starblue 10 September 2009 в 10:28
поделиться

4 ответа

почему вы определяете сборку для использования типа get !, также вам нужно указать пространство имен

string toNativeTypeName = "System.Int32";
Type t = Type.GetType(toNativeTypeName );
MessageBox.Show(t.FullName);
7
ответ дан 1 December 2019 в 00:12
поделиться

Что ж, если это действительно полное имя типа (то есть включая пространство имен) и он находится в этой сборке, тогда он должен работать. Не могли бы вы привести пример, где этого не происходит? Поскольку вы используете Assembly.GetType вместо Type.GetType , вы не должны включать имя сборки в имя типа.

Обратите внимание, что имя для универсального типа не то, что вы могли бы ожидать. Например, вы должны использовать:

assembly.GetType("System.Collections.Generic.List`1");

, чтобы получить общий тип списка, а затем использовать Type.MakeGenericType для предоставления аргументов типа.

Конечно, это актуально только тогда, когда тип является универсальным. Если проблема не в этом, я бы дважды проверил, действительно ли тип находится в вашей входной сборке.

РЕДАКТИРОВАТЬ: О, и имейте в виду, что вложенные типы будут «Контейнер + Вложенный»

30
ответ дан 1 December 2019 в 00:12
поделиться

Скорее всего, имя вашего типа неверно. Если вы создадите ссылку на тип в коде, а затем проверите его свойство Type.FullName , вы увидите, как должно выглядеть имя типа.

Также вы можете попробовать метод Type.GetType и посмотреть, что он возвращает. Может, вашего типа вообще нет в этой сборке?

Изменить: Оказывается, я ошибался, используя свойство Type.FullName. Если вы используете свойство Type.AssemblyQualifiedName, вы получите полное имя, которое может использоваться Type.GetType.

Для System.Xml.XmlNode вы получите следующее имя: System.Xml.XmlElement, System. Xml, Версия = 2.0.0.0, Культура = нейтральный, PublicKeyToken = b77a5c561934e089

4
ответ дан 1 December 2019 в 00:12
поделиться

Я наткнулся на эту ветку и заметил, что исходный вопрос еще не получил полного ответа. Я мог ошибаться, но, читая вопрос, я думаю, что авторы намеревались просто получить тип из сборки, на которую есть ссылка, или части вашего приложения.

Вот что я сделал, чтобы решить эту проблему.

public static Type GetTypeFromFullName(string fullClassName)
{
    AssemblyPartCollection parts = Deployment.Current.Parts;

    foreach (var part in parts)
    {
        Uri resUri = new Uri(part.Source, UriKind.Relative);
        Stream resStream = Application.GetResourceStream(resUri).Stream;
        Assembly resAssembly = part.Load(resStream);
        Type tryType = resAssembly.GetType(fullClassName, false);
        if (tryType != null)
            return tryType;
    }

    return null;
}
3
ответ дан 1 December 2019 в 00:12
поделиться
Другие вопросы по тегам:

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