【问题标题】:Newtonsoft.Json serialize object will throw FileNotFoundException if the object contains customize attribute如果对象包含自定义属性,Newtonsoft.Json 序列化对象将抛出 FileNotFoundException
【发布时间】:2020-10-29 20:56:00
【问题描述】:
[CSVTable]
  public class Course {
    [CSVColumn("Course")]
    public string CourseName { get; set; }
    [CSVColumn("Name")]
    public string Teacher { get; set; }
    [CSVColumn("Date")]
    public DateTime CreatedTime { get; set; }
  }

JsonConvert.SerializeObject(new Course() { CourseName = "Course", Teacher = "One", CreatedTime = DateTime.Now });

抛出关于 dll 的 FileNotFoundException “System.Runtime,版本=4.2.2.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a”未加载 在方法'JsonConvert.SerializeObject'

关于CSVTable和CSVColumn:

 [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = true, Inherited = false)]
  public class CSVColumnAttribute : Attribute, IComparable<CSVColumnAttribute> {
    public string HeaderText { get; set; }
    public int Order { get; set; }
    public string TableName { get; set; } = "default";
    public CSVColumnAttribute(string Header) { HeaderText = Header; }

    public int CompareTo([AllowNull] CSVColumnAttribute other) {
      return other == null ? 0 : Order.CompareTo(other.Order);
    }
  }
  [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = true, Inherited = false)]
  public class CSVTableAttribute : Attribute {
    public string Name { get; set; } = "default";
    public char JoinChar { get; set; } = ',';
  }

【问题讨论】:

  • 嗨,欢迎来到堆栈溢出。这似乎是一个通用问题,因为 JsonConvert.SerializeObject 在运行时需要您未提供的另一个参考/包。由于这是一个项目/解决方案配置问题,请添加框架版本等的详细信息。如果 .NET 核心 - 此线程可能会有所帮助:github.com/Azure/azure-functions-vs-build-sdk/issues/160

标签: c# .net serialization json.net custom-attributes


【解决方案1】:

.net core 项目中定义的属性,在.net framework 项目中引用。 只需为 Newtonsoft 定义一个新类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    • 2015-07-29
    相关资源
    最近更新 更多