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上調用我認爲的。 –