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

How to resolve parameterized class at runtime?

我有一个像这样的视图模型:

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 只有无参数构造函数,那么它确实可以很好地解析它。

我遇到异常:

Missing dependency. Component ViewModels.ViewModelSample has a dependency on Dto.MyClass, which could not be resolved. Make sure the dependency is correctly registered in the container as a service, or provided as inline argument.

MyClass是一个简单的DTO,所以它没有继承ITransientDependency。而且,我想在运行时分配这个值。

我该如何解决这个问题?

Signature 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