Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Работа с объектом после CreateInstance / 8 сообщений из 8, страница 1 из 1
03.12.2015, 17:41
    #39119764
aswell
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с объектом после CreateInstance
Всем доброго времени суток.

Постараюсь объяснить в чем трудность. Есть несколько классов. Все они реализуют интерфейс ISearchible, т.е я точно знаю, что у них есть метод Search. Как мне этот метод вызвать, если у меня есть только строка с названием класса?

Должно быть что-то типа

Код: c#
1.
2.
3.
 string MyClassName = "Class1";
 object instance = Activator.CreateInstance(MyClassName);
 instance.Search();   


Но 'Activator.CreateInstance' возвращает объект типа 'object' и там не слышно про метод 'search' а привести его к своему типу как?


Заранее спаибо.
...
Рейтинг: 0 / 0
03.12.2015, 17:43
    #39119766
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с объектом после CreateInstance
Код: c#
1.
2.
3.
4.
    Type type = Type.GetType("Class1");
    object instance = Activator.CreateInstance(type);
    MethodInfo method = type.GetMethod("Search");
    method.Invoke(instance, null);
...
Рейтинг: 0 / 0
03.12.2015, 18:00
    #39119783
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с объектом после CreateInstance
aswell,
Ну как принято приводить к типу?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
  public interface ITest
    {
        void Search();
    }
    public class Test : ITest
    {
        public void Search()
        {
            throw new NotImplementedException();
        }
    }
 static void Main(string[] args)
        {
            var t = Type.GetType("ConsoleApplication1.Test");
            var test = Activator.CreateInstance(t) as ITest;
            test.Search();

            Console.ReadLine();
        }
...
Рейтинг: 0 / 0
03.12.2015, 18:13
    #39119794
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с объектом после CreateInstance
aswell, а еще для такой фигни есть dynamic
...
Рейтинг: 0 / 0
03.12.2015, 18:20
    #39119796
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с объектом после CreateInstance
buseraswell, а еще для такой фигни есть dynamic
Угу, а еще и дженерик
...
Рейтинг: 0 / 0
03.12.2015, 19:59
    #39119867
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с объектом после CreateInstance
aswell,
вообще то вот пральный способ
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
            var type = Type.GetType("mynamespace.Class1");
            if (type != null)
            {
                var instance = Activator.CreateInstance(type);
                var res = instance as ISearch;
                if (res != null)
                {
                    res.Search();
                }
            }


на мажорных версиях можно через дженерик
...
Рейтинг: 0 / 0
04.12.2015, 11:02
    #39120225
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с объектом после CreateInstance
Axeleronbuseraswell, а еще для такой фигни есть dynamic
Угу, а еще и дженерик
А еще Expressions
...
Рейтинг: 0 / 0
04.12.2015, 11:40
    #39120280
aswell
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с объектом после CreateInstance
Спасибо, я походу лентяй... Все работает
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Работа с объектом после CreateInstance / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]