需要从构造函数信息中获取可选参数
本文关键字:获取 参数 信息 构造函数 | 更新日期: 2023-09-27 18:37:08
可能的重复项:
通过反射
调用具有可选参数的方法 C# 中构造函数参数的名称
现在我正在使用反射构建对象。 我正在使用它来填写 API 文档。 在许多情况下,我想要一个非默认构造函数,但有时它们具有可选参数。 这些可选参数需要用默认对象以外的新对象覆盖。 问题是我不知道如何获得它们。 使用构造函数Info.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 = "")
{
}
}
输出:
名称:选项 1 可选:假名称:选项 2 可选:真
可能的重复项。 您似乎可以调用该参数,但必须手动设置值。
我在这里发现了类似的问题:
通过反射调用具有可选参数的方法
看到这里,它有效:
var parameterName =
typeof(Foo)
.GetConstructor(new[] { typeof(string) })
.GetParameters()
.Single().Name;
public class Foo
{
public Foo(string paramName)
{
}
}