我正在使用強類型DataSet
手動添加行會出錯。我正在提供工廠方法以正確創建行。我想引導我的班級的消費者遠離*Table
生成的Add*Row
方法。如何將生成的方法標記爲過時?
將Obsolete attributes添加到生成的方法會做的伎倆。可悲的是,他們將在下次生成代碼時被刪除。
我不能在非生成的代碼中使用partial methods,因爲VS2008 DataSet設計器不使用它們。
MyType.Dataset.Designer.cs
看起來有點像這樣:
public partial class ThingyDataTable : global::System.Data.DataTable, global::System.Collections.IEnumerable {
// I'd love an [Obsolete("Please use the factory method.")] here.
// I can't use a partial method, as this method isn't partial.
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public ShelfRow NewShelfRow()
return ((ShelfRow)(this.NewRow()));
}
}
有一些方法可以讓我從MyType.cs
添加Obsolete
屬性?由於成員已經定義,嘗試C樣式原型不起作用。由於生成的成員不是partial
,因此partial
中的干擾不起作用。
// BROKEN EXAMPLE:
public partial class ThingyDataTable {
// I'd love an [Obsolete("Please use the factory method.")] here.
// I can't use a partial method, as this method isn't partial.
[Obsolete("Please use the factory method.")]
public ShelfRow NewShelfRow(); // ERROR: member already defined.
}
有一些其他的方式,我可以標記生成的方法Obsolete
?
我該怎樣才能警告消費者遠離生成的方法?
我會嘗試這個查找並替換爲「[global :: System.Diagnostics.DebuggerNonUserCodeAttribute()] [Obsolete(」請使用工廠方法。「)」[global :: System.Diagnostics.DebuggerNonUserCodeAttribute()]「 ]」。我無法找到DataSets的模板 – jrcs3 2009-02-25 00:03:11
編輯模板是一個非常有趣的想法。我如何確保任何擁有VS2008股票的人都會在查看源代碼後最終使用該模板? – 2009-02-25 00:08:51
如果你能找到模板。我認爲Visual Studio使用xsd.exe爲DataSet生成類,模板數據位於.exe或某些支持的.dll。 – jrcs3 2009-02-25 00:49:58