我正在开发一个项目,它将序列化/存储CSV文件中的对象。 (是的,我知道这不是最佳做法,但这是必须的。)我可以将属性动态应用于对象字段吗?
我试图保持我的解决方案清洁,所以我在解决方案中有多个项目,其中之一是一个库项目包含存储/序列化方法。该项目引用了CSVhelper,这是我喜欢用来执行CSV操作的第三方库。
在项目甲
foo myobject = new foo(x,y,z);
B.WriteToCsv(myobject);
在项目B(我的lib中,引用csvhelper)
public static WriteToCsv(foo myobject); // csvhelper would do the work
然而,Csvhelper需要我foo的对象上设置之后才能够操作的某些属性在上面。
我试图避免在我的Foo对象类定义文件将这些属性,而不是我希望能够动态的应用项目B.内这些属性
我的问题是,是否有可能以后应用属性,动态?关键是要尽可能保持我的项目清洁,但我觉得这会让事情变得更加复杂。这是一个坏主意,还是有这个问题的通用解决方案?
要求更新,与例如:
我Foo对象的定义:
public class Foo
{
public string a;
public string b;
public int c;
}
CsvHelper需要在这样的字段属性:
public class Foo
{
[CsvColumn(Name = "a", FieldIndex = 1)]
public string a;
[CsvColumn(Name = "b", FieldIndex = 2)]
public string b;
[CsvColumn(Name = "c", FieldIndex = 3)]
public int c;
}
为了保持我的代码干净,我想避免在这里添加这些属性,因为我想保留与storin相关的所有代码g /序列化在我单独的库中。 (项目B)
“属性”是指属性或.NET属性,例如。 '[序列化]'?如果你提供一个简短但完整的例子,那真的很有帮助。 – 2014-10-06 08:40:28
@JonSkeet更新。我的意思是.NET中的属性,是的。 [XYZ] – 2014-10-06 09:15:58