C # сомнение в GetType, управляемом CodeGen - PullRequest
1 голос
/ 09 марта 2009

Рассмотрим код,

Type t0 = Type.GetType("System.Drawing.dll");
Type t1 = Type.GetType("System.Drawing.Font");

Здесь, чтобы найти тип «System.Drawing.Font», нужна сборка «System.Drawing.dll». как это использовать .?

т.е. если я это сделаю, то значение t0 не будет нулевым .??

Считайте, что у меня есть dll, proj.dll , и мне нужно найти тип класса Class1 , который присутствует в dll.

Ответы [ 3 ]

9 голосов
/ 09 марта 2009

Укажите сборку, включая номер версии для строго именованных сборок:

Type t = Type.GetType("System.Drawing.Font,System.Drawing,"+
                      " Version=2.0.0.0, Culture=neutral, "+
                      "PublicKeyToken=b03f5f7f11d50a3a");

Конечно, если это действительно просто System.Drawing.Font (или другой тип, который вы знаете во время компиляции), используйте typeof:

Type t = typeof(System.Drawing.Font);

Если вы знаете другой тип в той же сборке во время компиляции, вы можете использовать Assembly.GetType:

Type sizeType = typeof(System.Drawing.Size);
Assembly assembly = sizeType.Assembly;
Type fontType = assembly.GetType("System.Drawing.Font");
2 голосов
/ 09 марта 2009

Передайте строгое имя сборки, чтобы загрузить ее, а затем загрузите тип из нее, например

  Assembly asm = Assembly.Load("System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
            Type font = asm.GetType("System.Drawing.Font");
0 голосов
/ 09 марта 2009

Вы хотите метод System.Reflection.Assembly.Load.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...