我使用DataContractJsonSerializer(我这个特定项目的唯一选项)来序列化一个类似于包含[IgnoreDataMember]
属性的类:
public class TestClass
{
public int Test1 { get; set; }
public int Test2 { get; set; }
[IgnoreDataMember]
public int Test3 { get; set; }
}
我的序列化代码直接来自MS的示例页面:
TestClass MyTest = new TestClass();
MyTest.Test1 = 1;
MyTest.Test2 = 2;
MyTest.Test3 = 3;
MemoryStream stream1 = new MemoryStream();
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(TestClass));
ser.WriteObject(stream1, MyTest);
stream1.Position = 0;
StreamReader sr = new StreamReader(stream1);
string sContent = sr.ReadToEnd();
但我得到的输出总是包含Test3
属性:
{"Test1":1,"Test2":2,"Test3":3}
如果我像这样定义类:
[DataContract]
public class TestClass
{
[DataMember]
public int Test1 { get; set; }
[DataMember]
public int Test2 { get; set; }
public int Test3 { get; set; }
}
我得到了正确的输出:
{"Test1":1,"Test2":2}
我真正想要序列化的类有几十个属性,我只想忽略它们中的一小部分,所以我更倾向于使用[IgnoreDataMember]
而不是[DataContaract]
和[DataMember]
。
我使用[IgnoreDataMember]
的方式做错了吗?
答案 0 :(得分:0)
令人惊讶的是,您需要将 module.exports = env => {
return {
entry: env.site + '/src/index.js',
output: {
filename: env.site + '.js',
path: path.resolve(__dirname, 'build')
}
}
}
属性添加到您的班级。否则,[DataContract]
并不总是正确解释DataContractJsonSerializer
和[IgnoreDataMember]
属性。
查看您的示例,正确的版本是:
[DataMember]