C# 컴파일러 :C# 객체 인터페이스 반환 형식 공분산
오류 CS0738 : Field<T>' does not implement interface member
Field.Value.get '최고의 구현 후보 Field<T>.Value.get' return type
T'인터페이스 멤버 반환 형식 '객체'
public interface Field
{
object Value {get;}
}
public class MyField<T> : Field
{
T _value;
public T Value
{
get
{
return _value;
}
}
}
일치하지 않습니다
왜? List < T>는 Microsoft 클래스에서 List를 확장하지만 사용자 (동일한 디자인 패턴 복사)는 허용되지 않습니다. 왜? 객체 또한 컴파일러 오류를 제공합니다 ... 내가이 문제를 해결하려면 어떻게
를 : T 어디
시도?
같은 주제의 다른 1.000.000 스레드라고 말하십시오.
blablabla, 'return type covariance', blablabla, 'you cant'.
그들은이 짐승을 컴파일하는 방법에 대한 해결책이나 해결 방법을 제안하지 않습니다. 요구 사항 :
1) 필드는 제네릭을 사용할 수없는 인터페이스입니다. "단일성 (unity)"이라고 불리는 이블 프레임 워크는 제네릭을 금지합니다. "필드를 구현"
2) 필드 < T는> 오히려 object.Try이 대신
보조 노트의 객체 양식을 얻을 : 왜 public으로 필드'_value'가 있습니까? 이것은 필드를 캡슐화하는 목적을 상실합니다 ... 개인용 –
당신이 맞습니다. – user2186597
C# 컴파일러는 여러분을 사랑하고 여러분이 안전하고 생산적이되기를 바래요. 그래서 때로는 위험하고 비생산적인 일을하지 않게됩니다. 엄마가 지붕 위에서 자전거를 타지 못하게했던 것처럼, 비록 그것이 굉장했을지라도. –