2013-08-17 1 views
2

직렬화 중에 모델에서 속성을 제외하려고 시도했습니다.JsConfig <MyClass> .ExcludePropertyNames 예제가 나를 위해 작동하지 않습니다.

나는 다음과 같은 구문을 사용하고 있습니다 :

JsConfig<MyTestClass>.ExcludePropertyNames = new[] { "ShortDescription" }; 

나는 다음이 바로 그 후 :

  return  (from o in __someProvider.GetAll() select (new 
         { 
          o.Name, 
          o.ShortDescription 
          o.InsertDate 
         }).TranslateTo<MyTestClass>()).ToList() 

결과는 메서드에서 반환되는 그러나 일단, 그것은 여전히 ​​"SHORTDESCRIPTION"필드에 포함되어 있습니다 존슨. 내가 뭔가 잘못하고 있는거야?

답변

7

JsConfig<T>.ExcludePropertyNamesTypeConfig<T>static constructor에 각 유형마다 한 번만 표시되는 것처럼 보입니다. 따라서 서비스 클래스에 ExcludePropertyNames을 구성한 경우 응답을 반환하기 직전에 너무 늦을 수 있습니다. TypeConfig 속성이 이미 설정되어 있고 MyTestClass에 대해 캐시되었을 수 있습니다. 나는 이것을 재현 할 수 있었다.

구성을 모두 설정 코드 AppHost으로 옮기는 것이 더 신뢰할 수 있습니다.

서비스 클래스에서이 작업을 정말로 수행해야하는 경우 (예 : 속성 이름 만 조건부로 제외하는 경우 대체 방법은 JsConfig.IncludeNullValues이 false (해당 서비스가 기본적으로 제공된다고 생각하는)이며 적절한 경우 서비스 코드 ShortDescription을 null로 설정하는 것입니다.