C#有没有一种方法可以动态地从序列化中排除成员?
例如(我编写此代码,不是真实的)
类定义:
[Serializable]
public class Class1
{
public int Property1{get;set;}
}
而我
Class1 c=new Class(){Property1=15};
SerializationOption option = new SerializationOption(){ExludeList=new List(){"Property1"}};
var result=Serialize(Class1,option);
最佳答案
唯一的控制方法是在类上实现ISerializable
并在序列化过程中访问某些上下文。例如:
public class Class1 : ISerializable
{
// ....
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
{
var excludeList = (List<String>)context.Context;
if(!excludeList.Contains("Property1"))
{
info.AddValue("Property1",Property1);
}
}
}
您在创建格式化程序时提供此上下文。例如:
var sc = new StreamingContext(StreamingContextStates.All,
new List<String> { "Property1" });
var formatter = new BinaryFormatter(null, sc);
关于c# - C#有没有一种方法可以动态地从序列化中排除成员?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15147664/