0
現狀如何在autofac的RegisterGeneric()方法中使用動態參數?
我註冊了一些類,一個接一個,都具有以下模式:
builder.RegisterType<NpgsqlDapperRepository<Foo, int>>()
.As<IDapperRepository<Foo, int>>()
.WithParameter(new NamedParameter("connectionString", ConnectionString))
.WithParameter(new NamedParameter("tableName", "Foos"))
.WithParameter(new NamedParameter("schema", "dbo"))
.InstancePerLifetimeScope();
什麼,我試圖
我想用RegisterGeneric()
如下:
builder.RegisterGeneric(typeof(NpgsqlDapperRepository<,>))
.As(typeof(IDapperRepository<,>))
.WithParameter(new NamedParameter("connectionString", ConnectionString))
.WithParameter(new NamedParameter("tableName", ???)) //TODO: Determine table name from entity type (acquire from dictionary or something). How do I acquire the type?
.WithParameter(new NamedParameter("schema", "dbo"))
.InstancePerLifetimeScope();
顯然這是因爲我不需要註冊100個基本上具有完全相同配置的實體,只有1個參數是不同的。
我需要從實體類型確定表名稱的問題。使用RegisterGeneric()
時如何獲得該類型?這甚至有可能嗎?
額外注
我注意到一些所謂ResolvedParameter
,看着成,但我不知道這是否是我所需要的。我想不是。但是,如果這確實是我需要的,我希望能爲我的情況提供一個例子。
看看了'log4net'記錄分辨率的代碼,它似乎是類似於你想要的東西。看看你是否可以適應你的使用... http://docs.autofac.org/en/latest/examples/log4net.html – Aron