【发布时间】:2018-02-12 16:12:06
【问题描述】:
我正在尝试构建一个包含核心和扩展包的库,例如 Entity Framework 及其数据库提供程序。
我想要做的是,当我使用依赖注入注册该库时,我想将具体实现作为参数提供。
想想英孚。为了在 EF 上使用 sql 提供程序,我们需要使用作为选项参数传递的 SQL 提供程序注册它,如下所示。
services.AddDbContext<ApplicationDbContext>(options =>
{
options.UseSqlServer(Configuration["ConnectionString"]);
});
我想建立类似的结构。可以说我的框架将提供电影制片人。它将有用于框架相关类的producer.core 包和两个名为Producer.Extensions.Hollywood 和Producer.Extensions.Bollywood 的扩展包。
如果我想使用Hollywood提供者,我需要安装核心包和Hollywood扩展包。在注册时它应该看起来像
services.AddFilmProducer(options =>
{
options.UseHollywoodProducer();
});
我什至找不到可以为我指明方向的关键字。我试图阅读实体框架的源代码,但对我来说太复杂了。
有大神指点一下吗?
提前致谢。
【问题讨论】:
-
您必须在允许这样做的包中创建自己的扩展方法
-
这就是我想要实现的目标,但没有任何运气。我无法使用自己的扩展方法构建该结构,这就是我要问的原因。有什么模式可以满足我的要求吗?这个有关键字吗?
-
展示你是如何构建它的。你展示了你想要的样子,而不是你尝试过的样子
-
其实我没有任何有意义的数据/代码可以和你分享。我被困。但我保证,如果我找到方法,我会分享。
标签: c# entity-framework dependency-injection .net-core