Как вызвать конкретный метод объекта после создания его через конструктор, используя отражение в .NET? - PullRequest
1 голос
/ 27 апреля 2011

У меня есть приложение WPF, которое я хочу запустить с помощью:

Assembly.LoadFrom

Оно работает нормально, но после этого я пытаюсь вызвать его конструктор по умолчанию:

LayerView.MainWindow();

Затемвызовите метод Show для созданного экземпляра.

Я пытался использовать:

assembly.GetTypes();

Циклически просматривая их, а затем, когда я нахожу правильный тип LayerView.MainWindow, вызовите:

c.getConstructors ();

Зацикливаясь на них, и когда я нахожу нужное ctor, звоню:

ctor.Invoke (null);

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

Также это лучший способ сделать это?Кажется довольно неуклюжим перебирать их, чтобы найти правильный.Может быть, это можно сделать лучше, используя Linq?

1 Ответ

3 голосов
/ 27 апреля 2011

Попробуйте привести результат ctor.Invoke(null) к типу ожидаемого объекта. Вот пример (примечание: я не знаю точно, какой конструктор вы вызываете, поэтому вам нужно выяснить, к какому типу его привести, если это не LayerView):

var view = (LayerView)ctor.Invoke(null);
view.Show();

http://msdn.microsoft.com/en-us/library/6ycw1y17.aspx

Метод Invoke для ConstructorInfo возвращает ссылку object, поэтому вы должны привести его к ожидаемому типу.

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