【发布时间】:2019-08-20 09:39:54
【问题描述】:
我对依赖注入解析器技术主题有点陌生。我可以知道我们如何通过配置文件部分解决依赖关系吗?下面是我的类和接口以及配置文件。
我确信缺少部分代码/设置。你能帮我解决这个问题吗?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace UnityConfiguration_Testing
{
public interface IUserAuthentication
{
string Authenticate(string username, string password);
string GetUserRole(string username);
}
}
public class CloudAppAuthetication: IUserAuthentication
{
public string Authenticate(string username, string password)
{
return "This Authenticate method executed from cloud class";//Jwt token based authentication logic should be there
}
public string GetUserRole(string username)
{
return "This GetUserRole method executed from cloud class";//New logic to user management api call
}
}
public class StandaloneAppAuthetication : IUserAuthentication
{
public string Authenticate(string username, string password)
{
return "This Authenticate method executed from standalone class";//current logic should be here
}
public string GetUserRole(string username)
{
return "This GetUserRole method executed from standalone class";//current logic should be here
}
}
接口方法的控制台应用调用:
using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.Configuration;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace UnityConfiguration_Testing
{
class Program
{
static void Main(string[] args)
{
IUnityContainer container = new UnityContainer();
container.LoadConfiguration("TestContainer");
IUserAuthentication _userAuthentication = null;
string validatedUser = _userAuthentication.Authenticate("testuser@user.com", "testpassword");
string validatedUserRole = _userAuthentication.GetUserRole("testuser@user.com");
}
}
}
我的控制台应用程序的 App.config 文件是:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
</configSections>
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<container name="TestContainer">
<register type="UnityConfiguration_Testing.IUserAuthentication,UnityConfiguration_Testing" mapTo="UnityConfiguration_Testing.StandaloneAppAuthetication,UnityConfiguration_Testing" />
</container>
</unity>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
【问题讨论】:
-
您评估过工厂模式吗?或者,如果您使用 DI,您可以评估一个基于 web.config 条目更改 DI 注册的案例?
标签: c# asp.net-core-mvc asp.net-core-webapi