this Java question과 유사합니다. 여러 인터페이스를 구현하는 변수를 지정하고 싶습니다. 예를.Net에서 여러 인터페이스를 구현하는 변수를 선언하는 방법이 있습니까?
를 들어private {IFirstInterface, ISecondInterface} _foo;
public void SetFoo({IFirstInterface, ISecondInterface} value)
{
_foo = value;
}
요구 사항 :
- 나는 푸에 전달 될 대부분의 유형에 대한 인터페이스를 추가 할 수있는 기능이 없습니다. 그래서 IFirstInterface 및 ISecondInterface에서 상속받은 세 번째 인터페이스를 만들 수 없습니다.
- Foo의 유형이 클래스와 관련이 없으며 사용자가 컴파일 타임에이를 알지 못하기 때문에 가능하면 포함하는 클래스를 일반화하지 않는 것이 좋습니다.
- 두 인터페이스의 메소드에 나중에 액세스하려면 foo를 사용해야합니다.
- 컴파일러를 안전하게 사용하고 싶습니다. 즉, 인터페이스를 사용하려고하기 전에 인터페이스에 캐스트하지 않으려 고합니다. foo가 두 인터페이스를 모두 구현하지 않으면 꽤 많은 기능이 제대로 작동하지 않습니다.
이것은 가능합니까?
편집 : 저는 여러 가지 이유로이 작업을 몇 번하고 싶습니다. 이 인스턴스에서는 ObservableCollections에서 ReadOnlyObservableCollections로 속성 집합을 변경하기 때문입니다. 소스 ObservableCollection에서 다른 Collection으로 프로젝션을 만드는 도우미 클래스가 있습니다. ReadOnlyObservableCollection은 ObservableCollection에서 상속받지 않으며 IList 및 INotifyCollectionChanged에서만 작업이 필요하기 때문에 ObservableCollection을 필요로하지 않고 내 소스 컬렉션을이 두 인터페이스의 조합으로 저장하려고합니다.
당신은 운이 있습니다. – ChaosPandion
짧은 대답 : 아니오. IFirstInterface 및 ISecondInterface에서 상속 한 세 번째 인터페이스를 정의하지 않아도됩니다. – Anthony
나의 유일한 생각은 두 개의 인터페이스 변수와 같은 인스턴스를 가질 수 있다는 것입니다. 이 상황이 필요한 상황은 무엇입니까? 이런 식으로 필요한 곳에서하고 있었던 일에 대해 통찰력을 줄 수 있습니까? –