【发布时间】:2013-11-29 19:23:16
【问题描述】:
我想序列化一个类 Product,并将所有 List<Product> 保存在一个 txt 中。我正在使用验证规则来验证界面中的价格。
当我调用序列化方法时,我得到一个SerializationException,System.Windows.Controls.ValidationRule 类型没有被标记为可序列化。
Pl 我该如何解决?谢谢。
我的代码:
在 Product.cs 中
[Serializable()]
public class Product : ValidationRule
{
protected float _price;
public float Price
{
get;set;
}
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
bool status = float.TryParse(value.ToString(), out this._price);
return status ? ValidationResult.ValidResult
: new ValidationResult(false, "Message");
}
}
在 MainWindows.xaml.cs 中:
private List<Product> _products;
private string _directory;
private BinaryFormatter formatter;
// Other methods, constructors
InsertProduct(new Product(tb_price.Text));
// Some code
public void Serializar()
{
using (FileStream fs = new FileStream(_directory, FileMode.OpenOrCreate))
{
formatter.Serialize(fs, (List<Product>)_products);
}
}
【问题讨论】:
-
该错误很清楚地表明
System.Windows.Controls.ValidationRule不可序列化,因此您无法对其进行序列化。不要继承ValidationRule,使用组合。
标签: c# wpf c#-4.0 generics serialization