嗨,我正在使用DataContractSerializer
,并为我的序列化对象之一的[OnDeserialized]
属性实现了一种方法。
现在,我想在该方法中使用我定义的属性之一(在已调用DataContractSerialiser ReadObject()方法的类中)进行执行。
有什么方法可以在为[OnDeserialized]
属性实现的方法中获取该已定义属性的值。
这是我的代码的样子
class ClassResponsibleForSerializingAndDeserializingMainObject
{
public int PropertyToBeUsedInOnDeserializedMethod{get;set}
public static T DeserializeFile<T>(string fileLocation)
{
T deserializedObject = default(T);
var serialiser = new DataContractSerializer(typeof(T));
using (var reader = new XmlTextReader(fileLocation))
{
deserializedObject = (T)serialiser.ReadObject(reader);
}
return deserializedObject;
}
}
[DataContract]
class SomeInnerClassToBeSerialized
{
//Some data members
[OnDeserialized]
private void OnDeserialized(StreamingContext context)
{
//Need the access to ClassResponsibleForSerializingAndDeserializingMainObject.PropertyToBeUsedInOnDeserializedMethod
}
}
有什么办法可以实现这一目标。
请注意,我PropertyToBeUsedInOnDeserializedMethod
不能设置为静态,因为我不想更改已经运行的体系结构。
通过传递构造函数参数来填充PropertyToBeUsedInOnDeserializedMethod
中的ClassToBeDeserialised
也不可行,因为我对许多其他类也有相同的要求。