내 프로그램의 일부 위치에서는 개체 (Test)의 구체적인 구현에 액세스해야하며 다른 위치에서는 읽기 전용 인터페이스 (ITest) 만 필요합니다. 이는 사용자가 모든 속성을 설정하고 수정할 수 있다고 가정하지 못하도록하기위한 것입니다.명시 적 인터페이스 구현 및 다중 인터페이스
예를 들어 사용자가 TestFactory.Search를 호출하면 반환 된 컬렉션이 속성 A를 수정하지 못하며 CollectionB를 사용하지 못하게됩니다 (함수 내에서 설정되지 않음).). 개체 이니셜 라이저를 사용할 수 있고 속성 이름을 동일하게 유지하고 싶습니다.
public interface IReadOnly
{
int Id{ get; }
string Name{ get; }
}
public class ClassA : IReadOnly
{
int Id{ get; internal set; }
string Name{ get; set; }
}
public interface ITest
{
int Id{ get; }
IReadOnly A { get; }
}
public class Test : ITest
{
private ClassA classA = new ClassA();
int Id{ get; internal set; }
IReadOnly ITest.A{ get{ return classA; } }
public ClassA A
{
get
{
return classA;
}
set
{
classA = value;
}
}
public IEnumerable<string> CollectionB {get;set;}
}
public static class TestFactory
{
IEnumerable<ITest> Search(){ /**/ }
Test Read(){ /**/ };
}
이 문제를 해결하기 위해 더 나은 방법이 있나요 및 명시 적 인터페이스 구현의 개념을 남용이다 : 나는 다음과 같은 해결책을 가지고 있습니다?
'Test' 클래스가'IReadOnly'을 구현하고'test IReadOnly'를 사용하자.'test' – sll