bool isPreferredConstructor(ConstructorInfo constructorInfo) { Type[] preferred; if (_preferredConstructor.TryGetValue(constructorInfo.DeclaringType, out preferred) && compareTypes(preferred, constructorInfo.GetParameters())) return true; if (constructorInfo.hasAttribute<PreferredConstructorAttribute>()) return true; return false; }