我的數據訪問層我想使用DTO並確保所有網關(表數據網關)都將實現返回給定網關特定DTO列表的方法。 要做到這一點,我創建空接口這樣確保所有類將共享相同的方法和字段
public interface IDataTransferObject{}
所有的DTO像我的所有網關此
public class UserAccountTypeDTO : IDataTransferObject
{
public int Id { get; set; }
public int AccountTitle { get; set; }
public int CreditTypeId { get; set; }
public bool Active { get; set; }
}
然後我做了通用接口實現這個接口
public interface IDefaultGateway<D> where D:IDataTransferObject
{
List<D> Read(SqlDataReader sqlReader);
}
並最終通過我的網關實現了IDefaultGateway
class UserAccountTypeGW : IDefaultGateway<UserAccountTypeDTO>
{
private const string Table = " UserAccountType ";
private string SelectAll = "select * from" + Table + "";
private string SelectById = ...;
public List<UserAccountTypeDTO> Read(SqlDataReader sqlReader)
{
throw new NotImplementedException();
}
}
可以讓空接口只是以某種方式將類組合在一起即使它們不共享任何行爲?
網關中的字段是相同的,只有它的值在變化。我做了複製和粘貼到每個網關的字段,我想知道是否有更快/更懶的方式如何做到這一點。
- 接口和字段不是朋友,因此它可能已被定義爲屬性。由於需要在每個DTO中創建構造函數來初始化屬性,並且設置爲private,所以它比我所做的要糟糕。
- 抽象類幾乎與界面相同
- 創建基類,定義字段和方法以及在網關構造函數中初始化(或覆蓋)它們在這種情況下更好還是與我所做的幾乎相同?
爲什麼所有的類都需要共享相同的方法和字段?什麼代碼會使用'IDataTransferObject'或'IDefaultGateway'?看起來他們只是提醒程序員在代碼中遵循特定的模式,但是沒有人會真正通過你描述的接口或基類來使用它們。 –
是的,他們在那裏提醒我不要忘記那種方法。 – Bendom