Как я могу вызвать конструктор? - PullRequest
1 голос
/ 01 декабря 2010

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

 object result = Activator.CreateInstance(typeof(T));

Мой тип T реализует абстрактный класс, в котором есть конструктор для получения экземпляра другого объектаT по сути является оберткой).Мой вопрос - есть ли способ, которым я могу явно вызвать конструктор не по умолчанию, чтобы я мог избавиться от этого:

 MyEntity entity = result as MyEntity;
 if(entity != null)
    entity.UnderlyingEntity = e; //where e is what I am wrapping 

Ответы [ 3 ]

7 голосов
/ 01 декабря 2010

Да, просто укажите аргументы конструктора после объекта Type, например:

object result = Activator.CreateInstance(typeof(T), arg1, arg2, ...);
2 голосов
/ 01 декабря 2010

Вы можете использовать переменную перегрузку Activator.CreateInstance Метод (Type, Object []) , и он будет использовать конструктор наилучшего соответствия.

1 голос
/ 01 декабря 2010

Вы можете просто позвонить object result = Activator.CreateInstance(typeof(T), e);

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