dls*_*sou 9 c# reflection constructor
我正在使用Type.GetConstructor(Type.EmptyTypes)获取类的默认构造函数.如果类具有没有参数(class A)的默认构造函数,则它可以工作.但是如果一个类有一个带有所有参数optional(class B)的构造函数,它就不起作用.程序不知道可选参数是什么,因为它只需要默认的构造函数.我可以使用哪些语句使其适用于这两种情况?谢谢,感谢任何帮助!
public class A
{
public A() {}
}
public class B
{
public B(int i = 0, string str = "") {}
}
Run Code Online (Sandbox Code Playgroud)
说我有以下课程:
public class SomeClass
{
public SomeClass()
{
}
public SomeClass(int x)
{
}
public SomeClass(int x = 0, int y = 0)
{
}
}
Run Code Online (Sandbox Code Playgroud)
基本上,您要求的查询将找到与上面的构造函数1和3匹配的构造函数?如果是这样,请使用:
var constuctors = typeof(SomeClass).GetConstructors()
.Where(x => x.GetParameters().Count() == 0
|| x.GetParameters().Count(param => param.GetCustomAttributes(typeof(OptionalAttribute), false).Count() > 0) == x.GetParameters().Count());
Run Code Online (Sandbox Code Playgroud)
令人难以置信的令人讨厌的查询,但它完成的工作仅返回上面的1和3.