Создание класса в той же .dll с помощью отражения на основе имени класса? - PullRequest
0 голосов
/ 22 декабря 2010

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

Все, что я хочу сделать, это что-то вроде.

thing.InstanceClass("ClassName");

Я бы хотелсделайте это без выполнения:

Assembly testAssembly = Assembly.LoadFile(@"c:\Test.dll");

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

Ответы [ 3 ]

5 голосов
/ 22 декабря 2010
Type instanceType = Type.GetType("SomeNamespace.SomeType");
object instance = Activator.CreateInstance(instanceType);

Вы можете разрешить его через Type.GetType(...), если сборка уже загружена в домен приложений.

Если вам нужна сборка, вы можете использовать Assembly.GetEntryAssembly или, возможно, typeof(SomeType).Assembly, где SomeType находится в вашей целевой сборке.

0 голосов
/ 23 декабря 2010

Если это известный (на который ссылаются, а не COM и т. Д.) Тип в вашем проекте, то лучше всего использовать строго типизированную ">CreateInstance функцию:

MyClass instance = Activator.CreateInstance<MyClass>();

Это сэкономит значительную часть затрат на производительность, так как нет никакой упаковки / распаковки.

0 голосов
/ 22 декабря 2010

Я считаю, System.Activator.CreateInstance - это метод фреймворка, который вы ищете.

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