如何在运行时解析参数化 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
我有一个像这样的视图模型:
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