kontrol edebilmesi
public class Product : ItemDataService<Product>
{
public int id {get; set;}
}
public class Customer : ItemDataService<Customer>
{
public int id {get; set;}
}
public abstract class ItemDataService<T, V>
{
public T Item { get; set; }
public int Id { get; set; }
public ItemDataService(T item)
{
Item = item;
}
public void SaveItem(T item)
{
if (Item.Id <= 0)
{
InsertItem(item);
}
}
}
Nasıl gibi, ItemDataService
sınıfta customer
sınıfının Id
özelliğine erişebilir daha sonra, soyut sınıfınızı bu arabirimi uygulayabilir ve ayrıca, T
'u gerektiren bir genel kısıtlama da ekleyebilirsiniz. Böyle terface:
public abstract class ItemDataService<T> : ISomeInterface
where T : ISomeInterface
{
public int Id { get; set; }
// ...
public void SaveItem(T item)
{
if (Item.Id <= 0) // Id is accessible now..
{
InsertItem(item);
}
}
}
DÜZENLEME Aslında
, sizin ilginç kalıtım ağacı verilen, hiç bir arayüze gerek yoktur. ItemDataService<T>
numaralı bir çocuk olmak için T
'u zorlayan genel bir kısıtlama ekleyebilirsiniz. Komik görünüyor, ama çalışır: i kontrol edebilirsiniz böylece
public abstract class ItemDataService<T>
where T : ItemDataService<T>
{
public int Id { get; set; }
// ...
public void SaveItem(T item)
{
if (Item.Id <= 0) // Id is accessible now..
{
InsertItem(item);
}
}
}
Nasıl, ItemDataService sınıfında müşteri sınıfı ıd özelliği erişebilirsiniz (Item.Id <= 0) OP için – Raj