0
我在我的项目中使用Ninject lib。我有一个任务:我需要通过传递的字典将接口绑定到服务,我更喜欢使用反射。C#Ninject绑定从字典<Type, Type>
没有反射,这是这样做的:
kernel.Bind<IUser>().To<User>();
如果IUSER - 接口,用户 - IUSER实现。
在思考我这样做:
MethodInfo method = kernel.GetType().GetMethods().FirstOrDefault(x=>x.Name == "Bind");
MethodInfo genericBind = method.MakeGenericMethod(bind.Key);
MethodInfo bindResult = genericBind.Invoke(kernel,null).GetType().GetMethods().FirstOrDefault(x => x.Name == "To" && x.IsGenericMethod == true);
MethodInfo genericTo = bindResult.MakeGenericMethod(bind.Value);
genericTo.Invoke(kernel, null); //Error is here
,但我得到一个错误System.Reflection.TargetException。
出了什么问题?
对不起,我的英语:-)
哪4行提示错误? –
最后一个。但我确切地说,那个bind.Value实现了bind.Key ... –
你应该在bindResult上调用我认为的。 –