C# Unity构造函数对象设置不正确
问题背景: 我试图通过使用Unity设置我试图创建对象的类的构造函数,但当前遇到以下错误: 错误: 结果消息: 测试方法ABCTestProject.TFStests.Check_Interface_CheckOut_方法引发异常: System.InvalidOperationException:类型ABC.Tools.VersionControl.TfsVersionControl.TfsCpromotionManager没有采用参数ITfsVcQaCheckoutWorker、ITfsVcQaCheckinWorker、VersionControlServer的构造函数 我相信这是我在注册unity对象时错过的设置,因为TfsPromotion管理器类确实希望将对象传递给它 守则: 下面是Unity creation类:C# Unity构造函数对象设置不正确,c#,constructor,unity-container,C#,Constructor,Unity Container,问题背景: 我试图通过使用Unity设置我试图创建对象的类的构造函数,但当前遇到以下错误: 错误: 结果消息: 测试方法ABCTestProject.TFStests.Check_Interface_CheckOut_方法引发异常: System.InvalidOperationException:类型ABC.Tools.VersionControl.TfsVersionControl.TfsCpromotionManager没有采用参数ITfsVcQaCheckoutWorker、ITfsVc
internal static ITfsVcPromotionManager CreateUnityObjects(VersionControlServer tfServer)
{
var unityContainer = new UnityContainer();
var test = new TfsVcQaCheckoutWorker(tfServer);
InjectionConstructor injectionConstructor = new InjectionConstructor(test);
var test1 = new TfsVcQaCheckinWorker();
InjectionConstructor injectionConstructor1 = new InjectionConstructor(test1);
unityContainer.RegisterType<ITfsVcPromotionManager, TfsVcPromotionManager>(new InjectionConstructor(new ResolvedParameter(typeof(ITfsVcQaCheckoutWorker)), new ResolvedParameter(typeof(ITfsVcQaCheckinWorker)), new ResolvedParameter(typeof(VersionControlServer))));
return unityContainer.Resolve<ITfsVcPromotionManager>();
}
该构造函数是内部的,但Unity将只查看公共构造函数。这就好比当您在内部声明构造函数时,您告诉.net CLR至少应该使用该构造函数从声明该类的同一程序集中创建该类。 因此,最简单的方法是将构造函数声明为public 如果您不能公开构造函数,请查看及其答案。在这里,创建工厂方法或类并将其与InjectionFactory连接可能是一个不错的选择
internal TfsVcPromotionManager(ITfsVcQaCheckoutWorker checkOutWorker, ITfsVcQaCheckinWorker checkInWorker, VersionControlServer tfServer)
{
_checkoutWorker = checkOutWorker;
}