czytałem rodzaj kompletów załadowanych na przykład Zadzwoń:Reflection - konstruktor z parametrami
var someType = loadedAssemblies
.Where(a => a != null && a.FullName.StartsWith("MY."))
.SelectMany(a => a.GetTypes())
.Distinct()
.ToArray()[0];
Jeśli counstructor posiada parametry, mogę je czytać:
ParameterInfo[] parameters = classType.GetConstructors()[0].GetParameters();
chciałbym wywołać konstruktora z domyślnymi wartości parametrów lub jeśli parametr jest wyliczany, z pierwszą wartością wyliczeniową. Jeśli jest tylko jeden parametr i jest enum, to działa tak:
object curObject = Activator.CreateInstance(classType, new object[] { parameters[0].ParameterType.GetEnumValues().GetValue(0) });
Jak mogę to zrobić, gdy istnieje więcej parametrów? trzeba utworzyć obiekt, aby odczytać właściwość:
var propertyInfo = someType.GetProperty("EntityType");
string entityType = propertyInfo.GetValue(curObject, null).ToString();
Cześć Fabjan, dziękuję za to rozwiązanie. Jest jeden problem. Mam tylko classType, które czytałem w czasie wykonywania. Nie wiem dla nazwy obiektu (klasy) podczas kompilacji. Twój kod: var curObject = MyFactory.MyCreateInstance
Zaktualizowałem moją odpowiedź, a także przykład kodu na DotNetfiddle – Fabjan
Dziękuję, działa idealnie.Czy znasz różnicę między constructor.Invoke vs Activator.CreateInstance? – Simon