0

基本クラスがあるとします

class Document
{
//some properties
}

および 2 つの派生クラス:

public class Order:Document
    {
    //some properties   
    }
public class Request:Document
{
    //some properties   
}

今、私はサービス層を持つ階層化されたアプリケーションを作りたいと思っています。また、次のような基本サービス層インターフェイスが必要です。

public interface IBaseService<T> where T:Document
{
    IList<T> GetAll();
}

私のレイヤーサービスクラスがそれを実装すること:

public SaleService:IBaseService<Document>;

したがって、基本サービスを実装するために定義する必要がありますが、代わりにIList<Document> GetAll()、SaleService にIList<Order> GetAll()メソッドが必要です。どうすればできますか?IList<Request> GetAll()IList<Document> GetAll()

4

1 に答える 1

4

IBaseService<T>さまざまなジェネリック パラメータを使用して明示的に実装する必要があります。

public class SalesService : IBaseService<Order>, IBaseService<Request>
{
    IList<Order> IBaseService<Order>.GetAll()
    {
        //return orders
    }

    IList<Request> IBaseService<Request>.GetAll()
    {
        //return requests
    }
}

実装されたメソッドはインターフェイスを介してのみ表示されるため、キャストして呼び出す必要があります。

IBaseService<Request> service = new SalesService();
IList<Request> request = service.GetAll();

クライアント コードはインターフェースのみに依存するIBaseService<T>必要があるため、これを頻繁に行う必要はありません。

于 2013-04-14T15:54:58.717 に答える