我有一個繼承自IRepository<TObject>
的IRepository接口。我也有一個從S QLRepository<TObject>
繼承的SqlRepository類,它繼而實現IRepository<TObject>
。爲什麼我不能實例化一個SqlRepository實例作爲IRepository?無法將通用類轉換爲通用接口,爲什麼?
public class MyObject : IObject {
...
}
public interface IRepository<TObject> where TObject : IObject, new() {
...
}
public interface IRepository : IRepository<MyObject> { }
public class SqlRepository<TObject> : IRepository<TObject> where TObject : IObject, new() {
...
}
public class SqlRepository : SqlRepository<MyObject> { }
public class Controller {
private IRepository _repository;
public Controller() {
_repository = new SqlRepository();
}
}
的例子試圖分配一個新SqlRepository在Controller類_repository,用下面的錯誤消息,當上述失敗。
Argument '1': cannot convert from 'SqlRepository' to 'IRepository'
繼承的基本原理有哪些我沒有把握,請幫忙。
我解決了這個問題,讓SqlRespository實現IRepository(公共類SqlRepository:SqlRepository,IRepository {}),這似乎有點多餘,但我想我理解了邏輯。 –
kim3er
2009-07-06 20:09:33