私は、インターフェイスを実装するビジネスオブジェクト(bo)を持つサービスを持っています。ボーもインターフェイスを実装しています。どのように私はサービスとボーを記述するインターフェイスを宣言することができますか?ここでCでネストされたインターフェイスをキャストする
いくつかのコード:
// Business object with interface
public interface IBoBase { }
public class Bo : IBoBase { }
// Service with interface
public interface IService<TBo> where TBo : IBoBase
{
TBo Get();
void Set(TBo bo);
}
public class Service : IService<Bo>
{
private Bo _bo;
public Bo Get(){return _bo;}
public void Set(Bo bo) { _bo = bo; }
}
// Usage
public class SubService
{
private readonly List<IService<IBoBase>> _injectedService;
public SubService(Service injectedService)
{
_injectedService = new List<IService<IBoBase>>
{
injectedService // cannot cast to IService<IBoBase> ... why?
};
}
}
誰でもインターフェースを設計する方法、アイデアを持っていますので、コードの例で説明したように、私はそれを使用することができますか?
可能な重複[ネストされたインタフェース:?キャストのIDictionary <処理鍵、IListの>のIDictionaryに<処理鍵、IEnumerableを>](http://stackoverflow.com/questions/10399568/nested-interfaces-cast- idbrevtkey-ilisttvalue-to-idictionarytkey-ie) –
'Service'クラスは' IService 'を実装していないので、なぜあなたはそれをキャストできますか? 'IService 'は 'IService TBo:IBoBase'と等しくありません。 –
Maarten
これは私の問題と疑問です。タイプされたBOをインターフェイスとして使用してサービスを記述するにはどうすればよいですか。協調性の異なるトリックはありますか? – Smuddy