2013-08-15 1 views
1

을 할당 나는 XNA에서 자신을 그리는 방법을 결정하기 위해 내 자산에 대한 작은 인터페이스 IXnaDraw을 만들었습니다. 인터페이스는 내가 상황의 변화를 가지고 따라 Microsoft.Xna.Framework.Color -object를 전달하고 싶었다는 null 허용 색상 - 기본값

interface IXnaDraw 
{ 
    void Draw(SpriteBatch SB); 
} 

하나의 방법으로 구성되어 있으며이 자산에 적용 할 다른 색상 체계를 필요로한다.

내가 기본 파라미터 허용되지

void Draw(SpriteBatch SB, Color? Col = null); 

에 같은 nullable 컬러 객체를 사용하려고, 난 내 클래스가 구현하지 않는 오류가 인터페이스 말했다 얻을. 또한이

컴파일 시간에 알려진해야하는 값을 나타내는 오류를 호출

void Draw(SpriteBatch SB, Color Col = Color.White); 

같은 것들을 사용했습니다.

어떻게 구현을 수정하고 내 기본 파라미터를 가질 수 ? 두 번째 매개 변수를 수락 할 경우

답변

2

나는 4.0 이상 .NET을 가정

void Draw(SpriteBatch SB, Color Col = default(Color)); 

또는

void Draw(SpriteBatch SB, [Optional]Color Col); 
+0

이 정확히 내가 필요한 것입니다! 그것을 파악하는 분을했다하지만'Optional'가 될'정확히 내가 필요로하는 것입니다 System.Runtime.Interop.OptionalAttribute'! –

1

감사, 당신은 두 개의 매개 변수를 사용하는 방법의 두 번째 오버로드를 만들어야합니다.
인터페이스의 구현은 정확히 일치해야합니다; CLR은 선택적 매개 변수를 인식하지 못합니다.

당신은 단일 매개 변수 버전은 당신이 원하는 경우, 다른 오버로드를 호출 할 수 있습니다.