2017-03-20 10 views
1

私はRedisのデータベースに対して次のリポジトリのクラスを持っている:ServiceStack IOC:テンプレートクラスに登録する方法

public class RedisRepositoryBase<TRedisEntity> : IRedisRepository<TRedisEntity> where TRedisEntity : class, IRedisEntity 
public class MyClassARepository : RedisRepositoryBase<MyClassA> 
public class MyClassBRepository : RedisRepositoryBase<MyClassB> 
public class MyClassCRepository : RedisRepositoryBase<MyClassC> 

TRedisEntityは私POCOSの基底クラスですIdCreationDateなどが定義されているようないくつかの一般的な小道具。派生レポクラスのコンストラクタは、次のように定義されます、私は多くの方法がある参照ServiceStack IOCのドキュメントを読む

public override void Configure(Container container) 
{ 
    container.Register<IRedisClientsManager>(c => new PooledRedisClientManager(connStr)); // the connection pool 
    // Now I do not understand how to register the repositories 
    container.Register<IRedisRepository<IRedisEntity>>(c => new MyClassARepository(c.Resolve<IRedisClientsManager>()); //This is wrong, get conversion error! 
    // ... other configuration stuff 
} 

public MyClassARepository(IRedisClientsManager redisManager) : base(redisManager) 
{ 
} 

は、今私は私のAPPHOSTクラスでこれらのリポジトリを登録しよう私のレポジスを登録するには、私はそれを得ることができません....

私はすべての派生クラスを登録する必要がありますか、これは間違った仮定ですか? Funcでレポクラスを登録する正しい構文は何ですか?

多くの感謝!

答えて

1

あなたMyClassARepositoryのみ実装IRedisRepository<MyClassA>ので、あなたがするだけことができます。

container.Register<IRedisRepository<MyClassA>>(c => 
    new MyClassARepository(c.Resolve<IRedisClientsManager>()); 
+0

確認ええ、私はあまりにも疲れている....おかげDEMIS! – ThommyB

関連する問題