내 클래스에서 사용할 제네릭 인터페이스의 구현을 지정하고자한다고 가정 해 보겠습니다.비공개 형식의 사용자 지정 제네릭 인터페이스 구현을 사용하려면 어떻게해야합니까?
class Foo<T> where T : IList<Bar>, new()
{
private T _list = new T();
}
class Bar{}
이
우리는 다음과 같은 foo는의 새로운 인스턴스를 만들 수 있습니다 : new Foo<List<Bar>>()
을하지만 무슨 일 Bar
인 클래스가 다른 공공 유형을 저장하는 데 사용하는 경우이 단순 (조금 못생긴 경우)입니다 Foo
내 개인 클래스 : Foo
이 형 제약에서 Bar
를 노출 할 수 없기 때문에
class Foo<T> where T : IList<Bar>, new()
{
private T _list = new T();
class Bar{}
}
은 분명히이 실패하고,를 인스턴스화 할 수있는 방법이 없습니다
class Foo<T> where T : IList<object>, new()
{
private T _list = new T();
class Bar{}
}
을하지만 그때 나는 Bar
에 object
에서 나는 인터페이스를 사용할 때마다 캐스팅 해요 :
나는 object
노출을 고수 할 수있다.
내 최고의 옵션은 무엇입니까?
나는 '바'를 노출하려고하지 않습니다. 나는하지 않을 것을 원합니다. 전달 된 제네릭 형식으로 내부적으로 사용하면됩니다. – dlras2