2013-09-01 4 views
0

을 인스턴스화하는 경우에도 null이 유지됩니다. 디버깅하는 동안 두 값을 보았습니다. 구성원은 양의 값을 나타내지 만 속성은 null로 유지됩니다.은 IList <> 속성 구성원이 나는 회원이 인스턴스화지고하더라도, 항상 null을 반환 할 것 같은 IList의 속성을 사용하는 데 문제가 있어요

_validTargets_validTargets as List<ModelRootEntity>의 수가 다른 경우 던져 버리기 위해 getter 속성에서 예외를 발생 시키려고 시도했지만 결코 던지지 않았습니다.

발견 된 질문 [사전 속성이 항상 인스턴스화되어 있는데도 불구하고 비슷합니다. 그러나 제 경우에는 직렬화에 관계없이 발생하는 것으로 보입니다.

아이디어가 있으십니까?

+0

왜 캐스팅을하고 있습니까? 왜 유형을 일치시키지 않겠습니까? – SLaks

+1

'개인 목록 _validTargets = 새 목록 (새 목록 ());' – Nilesh

+0

SLAKs, Nilesh, 좋은 질문으로 변경하지 않으시겠습니까? 아마 자체 스레드를받을 가치가 있습니다. 나는 이것에 대한 조언을 듣고있다. 'ModelRootEntity'는 도메인 내에서 사용되며 많은 내부 메소드는 IModelRootEntity가 선언 한 것보다 더 많은 멤버를 기대합니다 (이는 도메인 외부의 DTO를 통해 노출 된 것입니다). 그래서 나는 재산 안에서 또는 모든 내부 사용으로 한 번 캐스팅합니다. 한 번 해보니 깨끗해졌습니다. –

답변

0

위의 @Nilesh 주석 덕분에 답을 찾았습니다.

교체 :

private List<ModelRootEntity> _validTargets = new List<ModelRootEntity>(); 

로 :

private List<IModelRootEntity> _validTargets = new List<ModelRootEntity>(); 

실제 문제를 노출시켰다. 두 번째 줄은 컴파일되지 않습니다. 다음 게시물에 이유가 설명되어 있습니다 : C# newbie List<Interface> question

유일하게 이상한 것은 제가 던지지 않고 "버린"것을 제외하고는 예외였습니다.

0

속성을 List<ModelRootEntity>이 아닌 값으로 설정하면 이라는식이 반환되고 속성은 null이됩니다.