과 제네릭 형식 캐스팅 I가 다음과 같은 클래스와 인터페이스인터페이스 제약
내가IWrapper<IFoo>
에
Wrapper<Foo>
캐스팅 수있는 방법
public interface IFoo {}
public class Foo : IFoo {}
public interface IWrapper<T> where T : IFoo {}
public class Wrapper<Foo> : IWrapper<Foo> {}
? 캐스트를 사용할 때 예외가 발생합니다 (InvalidCastException) as를 사용할 때 null이 반환됩니다.
도움 주셔서 감사합니다.
UPDATE 여기
더 구체적인 예는 다음과 같습니다
UserRepository up = new UserRepository();
IUserRepository<IUser> iup = up as IUserRepository<IUser>;
내가 그물을 사용하고 있습니다 :
public interface IUser {}
public class User : IUser {}
public interface IUserRepository<T> where T : IUser {}
public class UserRepository : IUserRepository<User> {}
지금 나는 이런 식으로 뭔가를 할 수있을 필요가 4.5. 희망이 도움이됩니다.
음, 당신은 할 수없는 - '래퍼'하지 않습니다 'IWrapper '을 구현하십시오. 또한,'Woopper '의'Foo'가 실제로 새로운 타입 매개 변수라는 것을 알고 있습니까? 여기에 당신이 무엇을하려고하는지 명확히 알지 못합니다 ... –
예, 질문을 기각해야하지만 래퍼은 IWrapper를 구현합니다 . 그래도 래퍼에서 IWrapper 을 가져 오는 방법을 모른다. . –
Hernan
좋아요, 우리는 여전히 더 많은 정보가 필요합니다 : a) 어떤 버전의 C#을 사용하고 있습니까? b)'IWrapper '에서'T'가 어떻게 사용됩니까? (여기에 일반적인 변이를 사용할 수는 있지만 아직 알지는 못합니다.)'Wrapper'의'Foo'는 * 여전히 * 유형 매개 변수입니다 - Wrapper : IWrapper '을 * Wrapper 의 인스턴스 *? 완전한 예제가 도움이 될 것입니다. –