c# – 如何序列化委托
发布时间:2020-12-15 21:33:22 所属栏目:百科 来源:网络整理
导读:让我们看一下网格填充的例子. 我们有Column类.它有一个委托FormatCell,它接受一些数据并将其转换为字符串. FormatCell委托在设计时是未知的 – 它可能由插件设置. public class ColumnFormatter{ public FuncData,string FormatCell {get; set;} //...} 以下
让我们看一下网格填充的例子.
我们有Column类.它有一个委托FormatCell,它接受一些数据并将其转换为字符串. FormatCell委托在设计时是未知的 – 它可能由插件设置. public class ColumnFormatter { public Func<Data,string> FormatCell {get; set;} //... } 以下是如何使用此类列的示例. public class Table { public List<Column> Columns; public List<List<string>> BuildTable(List<Data> dataRows) { var table = new List<List<string>>(); foreach (var data in dataRows) { var line = new List<string>(); foreach (var column in Columns) { line.Add(column.FormatCell(data)); } table.Add(line); } return table; } } 现在每列应保存其状态.问题是如何序列化这个FormatCell委托? 附:我知道this question,但我的问题更具体案例.对于这种情况,也许有一个特定的可靠的磨合解决方案? 解决方法
为什么不直接使用继承?而不是尝试序列化委托.像这样的东西:
[Serializable] public abstract class ColumnFormatterBase { public abstract string FormatCell(Data data); } [Serializable] public class ColumnFormatter1: ColumnFormatterBase { object SerializableProperty1 {get; set;} object SerializableProperty2 {get; set;} public override string FormatCell(Data data) { return // formatted result //; } } 它可以被序列化,即使ColumnFormatterBase的实现位于插件程序集中的某个位置. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |