2017-12-11 16 views
0

私はを私の.Net Core 2.0ウェブアプリケーションの依存性注入に使用しています。私はAutofacと依存性注入の概念を初めて使用しています。Autofacでシングルトンを登録するには

今、DIにシングルトンを登録し、DIコンテナで解決したいと考えています。

C#コード[インタフェース]

public interface IMongoDbContext 
    { 
     IMongoDatabase Database { get; } 
    } 

クラス

public class MongoDbContext : IMongoDbContext 
    { 
     public MongoDbContext(string connectionString, string databaseName); 

     public string DatabaseName { get; } 
     public IMongoDatabase Database { get; } 
     public string ConnectionString { get; } 
    } 

リポジトリクラス

public class DemoRepository : IDemoRepository 
{ 
    public DemoRepository(IMongoDataContext context) 
    { 

    } 
} 

さて、.Autofac

builder.Register(c => new MongoDbContext(dbConnectionString, dataBaseName)).As<IMongoDbContext>().SingleInstance(); 
    //dbConnectionString and dataBaseName are string variables declared above. 

    // and then to Resolve it 
    builder.Register(c => new DemoRepository(c.Resolve<IMongoDbContext>)).As<IDemoRepository>(); 
// but in above line it shows error at `c.Resolve<IMongoDbContext>` it shows `cannot convert from 'method group' to 'IMongoDbContext'` 

は、誰もがこれを解決するために私を助けることができます。私はautofacと依存性注入には新しいです、私はどのように私がオートファクトでシングルトンを登録することができるか知りたいです。

どんな助力も高く評価されます... !!

おかげ

+1

「c.Resolve でエラーが表示されます。エラーとは何ですか? – mjwills

+0

@mjwills - 'メソッドグループ'から 'IMongoDbContext'に変換できません。 – prog1011

+2

[メソッドグループからオブジェクトに変換できません - C#](https://stackoverflow.com/questions/13116004/cannot-convert -from-method-group-to-object-c-sharp) – mjwills

答えて

3
c.Resolve<IMongoDbContext> 

する必要があります:あなたが呼び出すのを忘れ

c.Resolve<IMongoDbContext>() 

/機能を呼び出します。

0

DemoRepositoryを登録すると、手動で注射する理由がわかりませんでしたIMongoDataContext。 Inversion of Control Toolの主な目的はありませんか?私はあなたのアプローチを変えるべきだと思います。

builder.RegisterType<DemoRepository>().As<IDemoRepository>(); 
関連する問題