![](/img/trans.png)
[英].NET, C#: How to add a custom serialization attribute that acts as ISerializable interface
[英]c# How to specify custom Interface for Serialization
我有一个类库 myCore.dll 它包含一个类
public interface IMyClassA {
public string A { get; set; }
public string B { get; set; }
}
public class MyClassA: IMyClassA {
public string A { get; set; }
public string B { get; set; }
}
然后我得到了一个带有自托管 http 服务的控制台项目。 它引用 myCode.dll 并通过 http 与 json 进行一些接口。 但如果我在这个项目中进行序列化,我想隐藏 MyClassA 的成员“B”。 我正在使用 Newtonsoft.Json。 但我不想在 myCode.dll 中引用 Newtonsoft 来设置 MyClassA.B 上的 [JsonIgnore] 属性。
那么如何在从 IMyClassA 继承的控制台项目中创建自定义界面?
您必须编写一个自定义转换器。
如果您使用 NewtonSoft,您将有两种方法可以覆盖:ReadJson(...) 和 WriteJson(...),一种用于序列化,另一种用于反序列化。 这样您就可以编写自己的代码来负责序列化和反序列化。 拥有自己的代码,您可以忽略 MyClassA 的成员“B”。
注册转换器,而不是在 DTO 上使用注释
[JsonConverter(typeof(MyCustomConvreter))]
public interface IMyClassA {
public string A { get; set; }
public string B { get; set; }
}
这会导致对 Newtonsoft 的不良引用,您可以这样做来注册自定义转换器:
var jsonSerializer = new JsonSerializer();
jsonSerializer.Converters.Add(new MyCustomConverter());
检查 NewtonSoft 文档以获取自定义转换器: https ://www.newtonsoft.com/json/help/html/CustomJsonConverter.htm
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.