У меня есть заводский класс, который должен создать экземпляр неизвестного класса. Он делает это как так:Тип объекта с внутренним конструктором с отражением
public class Factory
{
public void SetFoo(Type f)
{
Activator.CreateInstance(f);
}
}
Проблема Я хотел бы, что конструктор быть внутренним, но маркировка это внутреннее дает мне MissingMethodException, но конструктор находится в той же сборке. если он установлен на puclic, он отлично работает.
Я попытался решения, предоставленные здесь How to create an object instance of class with internal constructor via reflection?
и здесь Instantiating a constructor with parameters in an internal class with reflection
, который транслирует делать, как, например:
Activator.CreateInstance(f,true)
, но не успех ...
Я использую NETStandard.Library (1.6.1) с System.Reflection (4.3.0)
Update:
ответы, представленные во время этого обновления указал мне в правильном направлении:
var ctor = f.GetConstructors(BindingFlags.Instance | BindingFlags.NonPublic);
var instance = (f)ctor[0].Invoke(null);
Спасибо, ребята!
'Activator.CreateInstance (f, true)' отлично работает для меня с внутренним конструктором. Можете ли вы предоставить [воспроизводимый пример] (http://stackoverflow.com/help/mcve) –
Означает ли конструктор некоторые параметры? –
Является ли класс 'Factory' определяемым в другой сборке, чем тип F? – Michael