내가 갖는 특정 예외입니다 :수 없습니다 <object>
tag = (INbtTag<object>)new NbtByte(stream);
:
캐스팅 할 수 없습니다 유형
NbtByte
의 객체가이 행에INbtTag<System.Object>
를 입력
여기에서 tag
은 다음과 같이 선언됩니다.
INbtTag<object> tag;
그리고 NbtByte
는 다음과 같이 정의된다 :
public interface INbtTag<out T>
은 내가 이런 식으로 일을 할 수있을 것 out T
로 선언하여 생각 : IBtTag
가
public class NbtByte : INbtTag<byte>
.
는 기본적으로, 나는
var dict = new Dictionary<string, INbtTag<object>>();
을 IbtTag<T>
의 사전을 갖고 싶어하지만 T
는 다른 유형의이다 (따라서 나는 object
으로 선언). 이것이 가능한가?
원래 그랬지만 비 제너릭은 내가 원했던 "Value"속성을 잃어 버렸습니다. 어떻게 그것을'객체'로 드러내고 타입을'T '로 "오버라이드"합니까? 아마도'new' 키워드를 사용하고 있을까요? – mpen
구현 샘플의 업데이트를 참조하십시오. –
아 ... 그 이유는 내가 IEnumerables로 그 패턴을 해왔다는 것입니다! 나는'T GetValue()'에'new' 키워드가 필요하다고 생각합니다. 그것은 꽤 아니지만, 우리가 할 수있는 최선의 방법이라고 생각합니다. 당신의 도움을 주셔서 감사합니다! – mpen