如何使用DataContract解析具有[OnDeserialized]属性的方法中的某些值?

时间:2018-11-22 09:49:54

标签: c# .net datacontractserializer

嗨,我正在使用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也不可行,因为我对许多其他类也有相同的要求。

0 个答案:

没有答案