我使用本教程中我的解决方案来创建插件架构,我也用ninject首次加载类和控制器实例:插件架构与ninject - 从插件组装到主MVC项目
现在,在用户处于结帐过程中的MVC应用程序中,我获取了他选择的付款方式,并且需要为选定的付款方式检索插件。我已经成功地获取插件控制器这样,虽然我不知道它是否是安全的或可以接受的做法:
Type type = Type.GetType(paymentMethod.PaymentMethodPluginType);
//get plugin controller
var paymentController = ServiceLocator.Current.GetInstance(type) as BasePaymentController;
//get validations from plugin
var warnings = paymentController.ValidatePaymentForm(form);
//get payment info from plugin
var paymentInfo = paymentController.GetPaymentInfo(form);
//…
我还需要访问一个插件类处理支付。 我有一个接口IPaymentMethod
public partial interface IPaymentMethod
{
void PostProcessPayment (PostProcessPaymentRequest postprocessPaymentRequest);
}
和插件的PaymentProcessor这样
public class PluginPaymentProcessor :IPaymentMethod
{
public void PostProcessPayment (PostProcessPaymentRequest postprocessPaymentRequest)
{
///
}
Now in MVC project I try to access PostProcessPayment method this way
IPaymentMethod pluginpaymentmethod = ServiceLocator.Current.GetInstance<IPaymentMethod>(paymentMethod.PaymentProcessor);
这里paymentMethod.PaymentProcessor是“MyApp.Plugins.MyPlugin.PluginPaymentProcessor,MyApp.Plugins.MyPlugin,版本= 1.0.0.0文化=中性公钥=空”
And want to use pluginpaymentmethod like i do in controller example
pluginpaymentmethod.PostProcessPayment(postProcessPaymentRequest);
但它抛出错误资源未发现pluginpaymentmethod不loade d。我该如何解决这个问题,或者你能否推荐任何类似实现的教程?谢谢。
只是一个个人的观点,但我认为你应该简化你的过程,并把所有事情都回滚到你的基本IPaymentMethod并实现它的功能,然后构建它。我看了一下codeproject的文章,看起来有人用ninject有问题,作者成功地获得了团结。所有我说的,当谈到支付网关等时,你需要充分理解发生了什么,并且有一个强大的框架。我不相信这一点。我的意见只。 – 2012-07-26 15:43:20