相关疑难解决方法(0)

Ioc/DI - 为什么我必须在应用程序的入口点引用所有层/组件?

(与此问题相关,EF4:为什么在启用延迟加载时必须启用代理创建?).

我是DI的新手,所以请耐心等待.我知道容器负责实例化我所有已注册的类型,但为了做到这一点,它需要引用我的解决方案中的所有DLL及其引用.

如果我没有使用DI容器,我就不必在我的MVC3应用程序中引用EntityFramework库,只需引用我的业务层,它将引用我的DAL/Repo层.

我知道在一天结束时所有的DLL都包含在bin文件夹中,但我的问题是必须通过VS中的"添加引用"显式引用它,以便能够发布包含所有必需文件的WAP.

dependency-injection castle-windsor inversion-of-control

114
推荐指数
3
解决办法
2万
查看次数

.Net Core 1.1中的传递引用

在.NET Core 1.1和Visual Studio 2017 RC中开发示例Web应用程序时,我意识到以下内容:

在此输入图像描述

如你看到的:

  • ClassLibrary3引用了ClassLibrary2,
  • 和ClassLibrary2引用ClassLibrary1

我在ClassLibrary3项目的Class3类中编写了一个简单的方法,而Intellisense允许我使用Class1来编写类的名称,我的意思是,没有对ClassLibrary1项目进行显式引用.

我在这里错过了一些观点吗?我不希望有人只是来看看ClassLibrary2.

谢谢.

.net c# transitive-dependency asp.net-core

15
推荐指数
2
解决办法
1270
查看次数

在运行时更改注入的对象

我希望IUserRepository具有多个实现,每个实现都可以使用MongoDB或任何SQL数据库的数据库类型.为此,我有ITenant接口,它具有连接字符串和其他租户配置.租户已被注入IUserRepository MongoDB或任何SQLDB实现.我需要知道的是如何正确地更改注入的存储库以选择租户的数据库.

接口

public interface IUserRepository 
{
    string Login(string username, string password);
    string Logoff(Guid id);
}

public class User
{
    public Guid Id { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public string LastName { get; set; }
    public string FirstName { get; set; }

}

public interface ITenant
{
    string CompanyName { get; }
    string ConnectionString { get; }
    string DataBaseName { get; }
    string EncriptionKey { get; } …
Run Code Online (Sandbox Code Playgroud)

asp.net-core-mvc asp.net-core

7
推荐指数
2
解决办法
3273
查看次数