Как проанализировать некоторое значение в методе, имеющем атрибут [OnDeserialized], используя DataContract? - PullRequest
0 голосов
/ 22 ноября 2018

Привет, я работаю с 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 передачей параметров конструктора не является возможным решением, поскольку у меня есть такое же требование и для многих других классов.

...