Есть ли способ сериализации метода, добавленного в динамический тип, десериализовать его, затем вызвать десериализованный метод? Ниже приведен пример:Последовательный динамический метод и вызов после десериализации
dynamic d = new ExpandoObject();
d.Property = "Test";
d.Method = new Action<string>(Console.WriteLine);
d.Method(d.Property); //Writes "Test"
var json = JsonConvert.SerializeObject(d);
var d2 = JsonConvert.DeserializeObject<ExpandoObject>(json, new ExpandoObjectConverter());
Console.WriteLine(d2.Property); //Writes "Test"
d2.Method(d2.Property); //throws an exception
Console.ReadLine();
Исключением является брошено:
Необработанное исключение типа 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' произошло в System.Core.dll
Дополнительная информация: Невозможно вызвать тип без делегата
Конечно, всегда есть способ сериализовать такие вещи, что «десериализация» имеет те же результаты. Из-из-коробки? Нет, вам нужно будет написать что-нибудь, чтобы воссоздать делегата Action, потому что он указывает на метод и т. Д. –