Скажите, у меня есть следующий класс:
public class SomeClass
{
public SomeClass()
{
}
public SomeClass(int x)
{
}
public SomeClass(int x = 0, int y = 0)
{
}
}
По сути, вы запрашиваете запрос, который найдет конструкторы, которые соответствуют конструкторам 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());
Невероятно неприятный запрос, но он выполняет свою работу, возвращая только 1 и 3 выше.