首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

怎么使用不同dll的相同namespace下的相同接口

2013-09-14 
如何使用不同dll的相同namespace下的相同接口问题:程序里加载了2个dll,这2个dll里都声明了同样的命名空间(

如何使用不同dll的相同namespace下的相同接口

问题:

程序里加载了2个dll,这2个dll里都声明了同样的命名空间(这个不违法),然后在这个同样的命名空间下,他俩又定义了同名的interface。

然后我程序里直接using这个命名空间,使用这个interface的时候就有问题了,因为它已经被定义在2个地方了。

有没有啥语法可以显示指出我使用哪个dll里的命名空间里的该类型?

解决办法:

1. 用alias。

Main App:

extern alias Lib1;extern alias Lib2;using System; namespace ConsoleApp{    class Program    {        static void Main(string[] args)        {            Console.WriteLine((new Lib1::MS.Lib.Class1()).Run());            Console.WriteLine((new Lib2::MS.Lib.Class1()).Run());        }    }}

主程序设置。

怎么使用不同dll的相同namespace下的相同接口

Lib1:

namespace MS.Lib{    public class Class1    {        public string Run()        {            return "MS.Lib1.Class1Run().";        }    }}

Lib 2:

namespace MS.Lib{    public class Class1    {        public string Run()        {            return "MS.Lib2.Class1Run().";        }    }}

2. 用property DllImport如下:把Lab1 封到另一个namespace下。直接被主程序调用。


    [DllImport("Lab1.dll", EntryPoint = "ChangeWindowMessageFilter", SetLastError = true)]        [return: MarshalAs(UnmanagedType.Bool)]        private static extern bool _ChangeWindowMessageFilter(WM message, MSGFLT dwFlag);


热点排行