Предположим, у меня есть следующий классЛучший подход к проектированию 8 перегруженных методов с комбинацией из 4 параметров
public static class ClassA
{
public static Type2 B { get; set; }
public static Type3 C { get; set; }
public static Type4 D { get; set; }
public static string Method(Type1 a, Type2 b, Type3 c, Type4 d)
{
//do smth
}
public static string Method(Type1 a, Type2 b, Type3 c)
{
Type4 d = D ?? defaultValue4;
return Method(a, b, c, d);
}
public static string Method(Type1 a, Type2 b, Type4 d)
{
Type3 c = C ?? defaultValue3;
return Method(a, b, c, d);
}
public static string Method(Type1 a, Type3 c, Type4 d)
{
Type2 b = B ?? defaultValue2;
return Method(a, b, c, d);
}
public static string Method(Type1 a, Type2 b)
{
Type3 c = C ?? defaultValue3;
Type4 d = D ?? defaultValue4;
return Method(a, b, c, d);
}
public static string Method(Type1 a, Type4 d)
{
Type2 b = B ?? defaultValue2;
Type3 c = C ?? defaultValue3;
return Method(a, b, c, d);
}
public static string Method(Type1 a, Type3 c)
{
Type2 b = B ?? defaultValue2;
Type4 d = D ?? defaultValue4;
return Method(a, b, c, d);
}
public static string Method(Type1 a)
{
Type2 b = B ?? defaultValue2;
Type3 c = C ?? defaultValue3;
Type4 d = D ?? defaultValue4;
return Method(a, b, c, d);
}
}
В которой я должен работать с комбинацией из 4 параметров, где всегда необходимы и другие принимаются в порядке приоритета от параметра, else от свойства и если свойство не установлено или параметр не передан из значения по умолчанию. мне нужно переделать это без Продублируйте кода, так что эти линии
Type2 b = B ?? defaultValue2;
Type3 c = C ?? defaultValue3;
Type4 d = D ?? defaultValue4;
написал только один раз. Это возможно?
Спасибо, хорошая идея. – Lums