可能重复:
Invoking methods with optional parameters through reflection
Name of the constructor arguments in c#
现在我正在使用反射构建对象。我用它来填写API文档。在许多情况下,我想要一个非默认构造函数,但有时它们有可选参数。需要使用默认值以外的新对象覆盖这些可选参数。问题是我无法弄清楚如何获得它们。使用constructorInfo.GetParameters()可以很容易地使用普通参数,但是看起来可选的不会回来。我在这里错过了什么吗?
示例代码:
ConstructorInfo[] constructorInfoList = type.GetConstructors(BindingFlags.Instance | BindingFlags.Public);
foreach (ConstructorInfo constructorInfo in constructorInfoList)
{
var parameters = constructorInfo.GetParameters();
if (parameters.Count() > 0)
{
答案:事实证明他们确实回来了......这是用户错误。
样品:
void Main()
{
var ctors = typeof(Foo).GetConstructors();
foreach(var ctor in ctors)
{
foreach(var param in ctor.GetParameters())
{
Console.WriteLine("Name: {0} Optional: {1}", param.Name, param.IsOptional);
}
}
}
public class Foo
{
public Foo(string option1, string option2 = "")
{
}
}
输出:
名称:option1可选:False 名称:option2可选:True
答案 0 :(得分:1)
答案 1 :(得分:0)
看到这里,它有效:
var parameterName =
typeof(Foo)
.GetConstructor(new[] { typeof(string) })
.GetParameters()
.Single().Name;
public class Foo
{
public Foo(string paramName)
{
}
}