标签: unity-container

我如何统一启动“play store”(google)?

如何通过 c#code 统一启动“play store”(google)?我无法打开 Play 商店应用程序。请帮助我 这个问题意味着在“Google Play 商店”应用程序中打开链接我的游戏,例如 google play 中的链接:com.ds.aa 请帮助我

unity-container unity-game-engine google-play

3
推荐指数
1
解决办法
5539
查看次数

如何在棱镜 IContainerRegistry 中为 2 个接口注册相同的实例(= 单例)

我有一个Prism应用程序,可以Unity进行依赖注入。

我有一个类具有以下继承:

ISomeService --> ISomeMoreSpecializedService --> SomeMoreSpecializedService
Run Code Online (Sandbox Code Playgroud)
  • ISomeService用于一些非特定于应用程序的模块。
  • ISomeMoreSpecializedService正在扩展之前的接口,添加一些特定于应用程序的概念
  • SomeMoreSpecializedService 是应该在特定软件中使用的唯一实现
  • (还有ISomeService的抽象实现)

我的专业服务如下:

public class SomeMoreSpecializedService : SomeService, ISomeMoreSpecializedService
{
    public SomeMoreSpecializedService(ISomeDependency dependency){
    }
}
Run Code Online (Sandbox Code Playgroud)

我在棱镜模块中:

public class MyModule : IModule
{
    public void RegisterTypes(IContainerRegistry containerRegistry)
    {
        containerRegistry.RegisterSingleton<ISomeService, SomeMoreSpecializedService>();
        containerRegistry.RegisterSingleton<ISomeMoreSpecializedService, SomeMoreSpecializedService>();
    }

    public void OnInitialized(IContainerProvider containerProvider)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

但我的问题是我收到了两个不同的单例。我该怎么做?

之前我正在构建一个new SomeMoreSpecializedService(),然后在做RegisterInstance。这到目前为止一直有效,但现在我需要注入一些依赖项。

c# prism unity-container

3
推荐指数
1
解决办法
1374
查看次数

没有可用的公共构造函数 Unity.Exceptions.InvalidRegistrationException

我继承了这个项目,我通常不统一作为我的依赖解析器,所以请原谅我,如果这是一个愚蠢的问题。

当我尝试解决接口时,我收到以下消息。

内部异常1:

InvalidOperationException:没有可用于类型 [ProjectName].ITest 的公共构造函数

内部异常2:

InvalidRegistrationException:引发了“Unity.Exceptions.InvalidRegistrationException”类型的异常。

现在,在有人跳到我身上并说我没有构造函数之前,该类看起来像这样......它有一个没有参数的构造函数。

namespace ProjectName
{
    public class Test : ITest
    {
        public Test()
        {
        }

        public int Foo() => 99;
    }

    public interface ITest
    {
        int Foo();
    }
}
Run Code Online (Sandbox Code Playgroud)

所以有一个没有参数的构造函数 这是试图解析该类的类。

[Route("api/Test")]
public class TestController : ApiController
{

    [Dependency]
    public ITest Test { get; set; }


    public TestController()
    {

    }

    [HttpPost]
    public IHttpActionResult Post()
    {
        var i = Test.Foo();
        return Ok();
    }
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc unity-container unity-interception

3
推荐指数
1
解决办法
9976
查看次数

如何在 Microsoft.Extensions.DependencyInjection 中注册现有实例?

我正在将 .NET 应用程序依赖注入框架从 .NET 迁移Unity ContainerMicrosoft.Extensions.DependencyInjection.

现在我没有找到将接口的现有实例注册到 serviceCollection 的方法。在 Unity 中,这可能是这样的:

_unityContainer.RegisterInstance<IInterface>(myObject);
Run Code Online (Sandbox Code Playgroud)

IServiceCollection我只找到AddSingleton, AddScopedAddTransient所有这些都只接受类型。

(我知道这样做一开始可能是不好的做法,但不幸的是它不在我的控制之下。)

.net c# dependency-injection unity-container microsoft-extensions-di

3
推荐指数
1
解决办法
993
查看次数

Unity IOC静态工厂

有没有办法通过xml配置来表示对象上的静态工厂方法?

.net dependency-injection ioc-container inversion-of-control unity-container

2
推荐指数
1
解决办法
4488
查看次数

在运行时使用Unity Property Injection注入IPrincipal

在ASP.Net MVC 2应用程序中使用Unity我对控制器的各种依赖关系正确实例化.但是,我想确保用户的当前IPrincipal将通过注入传递到较低级别的服务,存储库等.

因此,在较低级别的服务中,我有类似的东西:

[Dependency] IPrincipal CurrentUser {get; set;}
Run Code Online (Sandbox Code Playgroud)

如果我使用Property Dependency Injection,我得不到我想要的东西,因为Controller在用户主体可用之前被实例化,并且在任何情况下Unity都不知道获取当前用户凭据.

所以我想要的是能够将当前用户的IPrincipal(或可能是RolePrincipal)注入到Controller的一个依赖项中.

我怎样才能做到这一点?

asp.net-mvc dependency-injection unity-container

2
推荐指数
1
解决办法
2474
查看次数

拦截没有接口的Unity 2.0 HandlerAttribute

我是Unity 2.0的AOP功能的第一次使用者,并希望得到一些建议.我的目标是能够在ASPX页面中记录方法调用,如下所示:

public partial class Page2 : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }

        [Log]
        private void Testing()
        {

        }
    }
Run Code Online (Sandbox Code Playgroud)

这是以下代码LogAttribute:

public class LogAttribute : HandlerAttribute
{
    public override ICallHandler CreateHandler(IUnityContainer container)
    {
        return new LogHandler(Order);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在LogHandler:

public class LogHandler : ICallHandler
{
    public LogHandler(int order)
    {
        Order = order;
    }

    public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
    {
        string className = input.MethodBase.DeclaringType.Name;
        string methodName = input.MethodBase.Name;

        string preMethodMessage = string.Format("{0}.{1}", …
Run Code Online (Sandbox Code Playgroud)

aop unity-container

2
推荐指数
1
解决办法
2467
查看次数

Resolve <T>()是否按会话返回对象?

在Microsoft Unity IoC中,如果我调用Resolve<SomeType>(),我可以保证返回的对象是在当前会话期间创建的对象吗?

例如,三个用户登录,并且假设SomeType在容器中创建的对象具有针对每个用户的不同值.是否会调用Resolve返回为当前用户创建的对象?或者它会做一些愚蠢的事情,比如返回创建的最后一个?

由于一些环境问题,我自己也遇到了麻烦,我需要尽快检查一下,所以如果有人能回答这个问题,那将非常有帮助!

编辑

请原谅我,我是Unity的新手,但根据我在这里阅读的内容,似乎我应该能够在容器中注册具有唯一名称的对象,并通过该名称检索它们.那么,我不能使用会话ID或会话中持续存在的其他值来检索我的对象吗?

c# asp.net-mvc ioc-container unity-container

2
推荐指数
1
解决办法
2727
查看次数

在ASP.net解决方案中使用Unity IOC容器

我们在ASP.Net解决方案中使用Microsofts Unity IOC容器.

在其中一个顶层中,我们使用RegisterInstance方法.然后我们使用Resolve方法将其降低.

在查看另一个问题时,我们已经看到ASP.Net具有线程敏捷性,即请求可以跳转线程.

所以问题是如果我们在一个线程上注册一个实例,并且在我们解析实例之前请求跳转线程,我们会回到正确的实例吗?

c# asp.net multithreading inversion-of-control unity-container

2
推荐指数
1
解决办法
454
查看次数

Unity,Moq和NUnit - 在测试中未识别参数的控制器构造函数

我对单元测试很新,所以如果这不是一个非常好的问题,我会道歉.

我有一个主要的Web项目,以及一个附带的NUnit测试库.我正在使用Unity将接口注入主项目中的控制器.例如:

    public class EquipmentController : Controller
{
    private readonly ILocationRepository locationContext = null;
    private readonly IRepository<EquipmentCategory> categoryContext = null;
    private readonly IEquipmentRepository equipmentContext = null;
    private readonly IRecordRepository recordContext = null;

    public EquipmentController(ILocationRepository locationRepo, IRepository<EquipmentCategory> categoryRepo, IEquipmentRepository equipmentRepo, IRecordRepository recordRepo)
    {
        this.locationContext = locationRepo;
        this.categoryContext = categoryRepo;
        this.equipmentContext = equipmentRepo;
        this.recordContext = recordRepo;
    }
Run Code Online (Sandbox Code Playgroud)

Web应用程序本身实际上按预期工作.但是,我在尝试编写测试用例时遇到了问题.例如,在测试库中,我有以下内容:

using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Practices.Unity.Mvc;
using Microsoft.Practices.Unity.ObjectBuilder;
using Microsoft.Practices.Unity.StaticFactory;
using Moq;
using ITEquipmentDatabase;
using ITEquipmentDatabase.Models; …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing unity-container

2
推荐指数
1
解决办法
382
查看次数