사용자가 RGBA 바이트를 전달하여 생성자의 클래스에 대한 사용자 정의 색상을 지정하게하고 싶습니다. 사용자 지정 색을 지정하지 않으면 응용 프로그램 설정의 기본 색이 사용됩니다. 그러나 알파가 빠져 있다면 완전히 불투명하다고 가정합니다.선택적 바이트 인수가 전달되었는지 확인하십시오.
내가 좋아하는 것이 무엇 :
public MyClass(byte r_col = -1, byte g_col = -1, byte b_col = -1, byte a_col = 255)
{
if (r_col == -1 | g_col == -1 | b_col == -1)
{
// use default color
}
else
{
this.color = System.Windows.Media.Color.FromArgb(a_col, r_col, g_col, b_col);
}
}
그러나, "잘못된"값은 바이트에 대한이 없습니다 (-1 무효), 그래서 바이트 실제로 함수에 전달 된 경우 내가 감지 할 수 없습니까 . 어떤 옵션이 있습니까? 가능한 경우 함수 오버로딩을 피하고 싶습니다.
사실 이것은 호출자가 무시할 일부 값을 전달할 수 있도록하기 때문에 잘못된 API 디자인입니다. 예 : 발신자가 R과 G 만 전달하면 어떻게됩니까? RGB 또는 RGBA 만 전달하면 안되며 오버로드가 필요합니다. –
좋은 점 - 현재는 기본 색상을 사용하므로 오류가 발생하지 않습니다. 오버로드가 여기에서 가장 완벽한 방법이라고 생각합니다. – Michael