【问题标题】:SerializationException in C# WPFC# WPF 中的序列化异常
【发布时间】:2013-11-29 19:23:16
【问题描述】:

我想序列化一个类 Product,并将所有 List<Product> 保存在一个 txt 中。我正在使用验证规则来验证界面中的价格。

当我调用序列化方法时,我得到一个SerializationExceptionSystem.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


【解决方案1】:

标记您的 Validate 属性
[System.Runtime.Serialization.IgnoreDataMember]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    相关资源
    最近更新 更多