工作單位,我有以下代碼(我中省略某些領域,使之簡單)Repository模式,與泛型
public interface ICustomer
{
int Age { get; set; }
string Name { get; set; }
}
public class Customer : ICustomer
{
public int Age { get; set; }
public string Name { get; set; }
}
public interface ICustomerRepository<T> where T : class
{
IEnumerable<T> GetCustomers();
T GetCustomer();
void AddCustomer(T customer);
}
public class CustomerRepository<T> : ICustomerRepository<T> where T:class
{
public IEnumerable<T> GetCustomers()
{
return new List<T>();
}
public T GetCustomer()
{
return null;
}
public void AddCustomer(T customer)
{
}
}
public class UnitOfWork //: IUnitOfWork
{
public ICustomerRepository<ICustomer> CusRepo
{
get
{
return new CustomerRepository<Customer>();
//Error: Error 1 Cannot implicitly convert type 'ConsoleApplication1.CustomerRepository<ConsoleApplication1.Customer>' to 'ConsoleApplication1.ICustomerRepository<ConsoleApplication1.ICustomer>'. An explicit conversion exists (are you missing a cast?)
}
}
}
我得到以下錯誤的的UnitOfWork類。我該如何解決?
.Error 1不能將類型'ConsoleApplication1.CustomerRepository'隱式轉換爲'ConsoleApplication1.ICustomerRepository'。存在明確的轉換(您是否缺少演員?)
我無法使用協變,因爲該參數用於輸入和輸出目的。
感謝您的迴應,它在一定程度上有所幫助。我的解決方案中有一個小問題。我的接口在一個單獨的項目中,我的具體實現在一個單獨的項目中。所以我不能做下面的公共接口(客戶在不同的項目中)ICustomerRepository:IBaseRepository –
user3547774