JsConfig <myclass> .ExcludePropertyNames示例,不适合我</myclass>

时间:2013-08-17 03:57:44

标签: servicestack servicestack-text

尝试在序列化期间排除模型中的属性。

我使用以下语法:

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

之后我有以下内容:

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

但是,一旦从方法返回结果,它仍然在Json中包含“ShortDescription”字段。我做错了吗?

1 个答案:

答案 0 :(得分:7)

JsConfig<T>.ExcludePropertyNames似乎只对TypeConfig<T> ExcludePropertyNames static constructor中的每种类型进行了一次检查。因此,如果您在服务类中配置MyTestClass,就在返回响应之前,可能为时已晚 - 可能已经为JsConfig<T>设置并缓存了TypeConfig属性。我能够重现这一点。

更可靠的替代方法是将您的所有AppHost配置移至JsConfig.IncludeNullValues设置代码。

如果您确实需要在服务类中执行此操作,例如如果您只是有条件地排除属性名称,那么另一种方法是确保ShortDescription为假(我相信它是默认值)并且在您的服务代码集{{1}}中为适当时为null。 / p>