Я только начал использовать C # 4.0 (RC) и столкнулся с этой проблемой:
class Class1 { public Class1() { } }
class Class2 { public Class2(string param1) { } }
class Class3 { public Class3(string param1 = "default") { } }
Type[] types = new Type[] { typeof(Class1), typeof(Class2), typeof(Class3) };
// Problem starts here, main-method
for(int i = 0; i < types.Length; i++)
{
ConstructorInfo ctr = provider.GetConstructor(Type.EmptyTypes);
Console.WriteLine(ctr == null ? "null" : ctr.Name);
}
Обратите внимание, я никогда не пробовал этот фактический код, но я только что посмотрел на результаты выполнения GetConstructor с использованием отладки в VS2010
Это идеально подходит для двух первых классов (1 и 2), первый печатает фактическое имя объекта ConstructorInfo объекта без параметров конструктора Class1, второй печатает ноль. Однако проблема возникает с третьим, потому что на самом деле я не хочу знать, принимает ли он 0 параметров или нет, а может ли я создать экземпляр класса без каких-либо параметров. Как мне это сделать?