我正在開發一個項目,它將序列化/存儲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