NotificationHubConnectionSettings.cs
文件使用Unity依赖注入的NuGet设置依赖注入实施应用C#
private static IUnityContainer BuildUnityContainer()
{
try
{
var container = new UnityContainer();
container.RegisterType<NotificationHubConnectionSettings>().RegisterType<NotificationHubConnectionSettings>(new HierarchicalLifetimeManager());
return container;
}
catch (Exception)
{
return null;
}
}
在HomeController.cs
要来从web.config中
public class NotificationHubConnectionSettings
{
public NotificationHubClient Hub { get; set; }
public NotificationHubConnectionSettings()
{
Hub = NotificationHubClient.CreateClientFromConnectionString(ConfigurationManager.AppSettings["Microsoft.Azure.NotificationHubs.ConnectionString"], ConfigurationManager.AppSettings["NotificationHub"]);
}
}
内Bootstrapper.cs
连接字符串实施依赖注入 -
private readonly NotificationHubClient _hub;
public HomeController(NotificationHubConnectionSettings hub)
{
_hub = hub.Hub;
}
// POST api/register
// This creates a registration id
public async Task<string> Post(string handle = null)
{
string newRegistrationId = null;
if (handle != null)
{
var registrations = await _hub.GetRegistrationsByChannelAsync(handle, 100);
这是实现依赖注入的正确方法吗?
这是一个代码审查问题。这是本网站的主题。有没有遇到一些错误/问题? – Nkosi
它看起来并不适合我,但是我不太了解Unity作为一个容器。您应该将接口绑定到容器代码中的具体类型。注册类型()。RegisterType (new HierarchicalLifetimeManager()) 然后,您应该将该接口作为构造函数参数类型。 –