【发布时间】:2017-07-25 08:04:30
【问题描述】:
我有一个针对 .net 核心的 WebApplication。 我还创建了一个针对 .net 核心的类库。
我正在按照这个 Dapper 教程 Here 创建一个用户存储库
如果能够将在 WebApplication 启动时注入的选项提供到将成为数据访问层的项目中,那就太好了。
这是单独项目中用户存储库的代码。
class UsersRepository
{
private readonly MyOptions _options;
private string connectionString;
public UsersRepository(IOptions iopt/// insert Option here )
{
_options = iopt.Value;
connectionString = _options.connString;
}
public IDbConnection Connection
{
get
{
return new SqlConnection(connectionString);
}
}
WebApplication Project Startup 如下所示。
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.Configure<MyOptions>(Configuration);
services.AddMvc();
}
当然MyOptions 是Web 应用程序中的一个类,它只有一个属性connString
【问题讨论】:
-
是什么阻止你这样做?拥有其他项目参考选项扩展库并使用接口,然后将存储库注册到组合根目录。
-
@Nkosi 这些实际上是你说的话:P
-
我不太明白你最后的评论。您是否删除了之前的评论,该评论会将最后一条置于上下文中?
-
@Nkosi 这是个玩笑,意思是我不太明白你在说什么。很多我不熟悉的术语。我猜你是说创建一个只有选项的新项目,并在两个项目中引用它,但是接口、寄存器、组合根词我不明白如何完成这三个。
-
如果您想与多个项目共享类,您需要将它们从 Web 应用程序项目中分离出来,因为您的库无法引用应用程序,因为它会导致循环依赖(库依赖于 App , App on Library),无论如何都是不好的做法,即使它有效