C++에서는 const 인 개체를 함수에 전달할 수 있습니다. 이렇게하면 코드가 해당 객체를 '읽기 전용'으로 처리합니다 (캐스트를 사용하여 constness를 제거 할 수 있다는 사실은 무시합니다). 나는 C#과 같은 것을하려고 노력하고있다. 사용자가 구현할 인터페이스가 있습니다. 메서드 중 하나에 매개 변수로 개체가 제공됩니다. 메서드의 범위에서 'const'개체를 만들고 다르게 변경할 수있는 방법은 무엇입니까?C#의 Const 개체 (매개 변수로)
솔루션 : 인터페이스. 인터페이스에서 유일한 속성을 사용할 수있는 'get'인터페이스를 만듭니다.
public interface IVal { ... }
public interface IFoo
{
IVal Val { get; }
}
public class Foo : IFoo
{
public IVal Val { get; }
}
나는 인터페이스를 통과하고 모든 것이 훌륭합니다. 그러나, 내 구체적인 수업에서, 나는 '세트'를 사용할 수있게하고 싶습니다. 그것은 내가 구체적인 클래스 값을 설정할 수있게 해준다. 내 구체적인 수업은 어떻게 생겼지?
'internal'키워드를 사용하려고 생각했습니다. 나는 당신 자신의 어셈블리 내에서 코드에 메소드/속성을 노출 시킨다는 것을 읽었다. 이게 내 대답인가?
편집 : 더 잘 설명하기 위해 자동으로 캐스팅 해주는 설정기를 추가했습니다.
private Val _val;
public IVal Val
{
get { return this._val; }
set { this._val = value as Val; }
}
을 할 수 있습니다. 'Val'이 아닌 무언가에 그것을 놓으려고하면'null'로 자동 설정됩니다. 그것은 대부분의 사람들이 기대하는 것이 아닙니다. 당신은 아마도 당신이'Val' 또는'IVal'을 원하고 그것을 고수 할 것인지를 결정해야합니다. – svick