如何在运行时解析参数化的类?

问题描述 投票:0回答:1

我有这样的视图模型:

public ViewModelSample(MyClass a)
{
}

我试图通过以下方法解决此问题:

var myClassObj = new MyClass();
var vm = IocManager.Resolve<T>(myClassObj); // where args = object of MyClass

签名IIocResolver . T Resolve<T> (object argumentsAsAnonymousType);

如果我要从System.Activator执行此操作,那么我会打电话给return (T)Activator.CreateInstance(typeof(T), myClassObj);,它可以正常工作。

此外,如果ViewModelSample仅具有无参数构造函数,那么它确实可以解决它。

我遇到了例外:

缺少依赖项。零件ViewModels.ViewModelSample有一个依赖Dto.MyClass,可以无法解决。确保依赖项已正确注册到容器作为服务,还是作为内联参数提供。

MyClass是一个简单的DTO,因此它不继承ITransientDependency。此外,我想在运行时分配此值。

我该如何解决?

dependency-injection castle-windsor aspnetboilerplate
1个回答
0
投票

签名IIocResolver . T Resolve<T> (object argumentsAsAnonymousType);

在这种情况下,因为new { a = myClassObj }是您的参数名称,所以为a

var vm = IocManager.Resolve<ViewModelSample>(new { a = myClassObj });

参考

匿名类型:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/anonymous-types

© www.soinside.com 2019 - 2024. All rights reserved.