C#将类强制转换为接口列表

C#将类强制转换为接口列表,第1张

概述我正在尝试动态加载一些.dll文件.文件是插件(现在是自编写的),它至少有一个实现MyInterface的类.对于每个文件,我正在执行以下 *** 作: Dictionary<MyInterface, bool> _myList; // ...code Assembly assembly = Assembly.LoadFrom(currentFile.FullName); fo 我正在尝试动态加载一些.dll文件.文件是插件(现在是自编写的),它至少有一个实现MyInterface的类.对于每个文件,我正在执行以下 *** 作:
Dictionary<MyInterface,bool> _myList;    // ...code    Assembly assembly = Assembly.LoadFrom(currentfile.Fullname);    foreach (Type type in assembly.GetTypes())    {        var myI = type.GetInterface("MyInterface");        if(myI != null)        {            if ((myI.name == "MyInterface") && !type.IsAbstract)            {                var p = Activator.CreateInstance(type);                _myList.Add((MyInterface)p,true);            }        }    }

运行此 *** 作会导致强制转换异常,但我找不到解决方法.无论如何,我想知道为什么这根本不起作用.我正在寻找.NET Framework 3.5中的解决方案.

发生在我身上的另一件事是在上面的代码中向_myList添加新条目之前运行以下内容后在p中获取null:

var p = type.InvokeMember(null,BindingFlags.CreateInstance,null,null) as MyInterface;

这段代码是第一次加载插件的尝试,我没有找到为什么p还是null.
我希望有人能以正确的方式引导我:)

解决方法 你应该真正阅读Jon Skeet的 Plug-ins and cast exceptions,它解释了你看到的行为以及如何正确地进行插件框架. 总结

以上是内存溢出为你收集整理的C#将类强制转换为接口列表全部内容,希望文章能够帮你解决C#将类强制转换为接口列表所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1262907.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存