zoukankan      html  css  js  c++  java
  • 如何使用不同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());
            }
        }
    }

    主程序设置。

    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)]
            [returnMarshalAs(UnmanagedType.Bool)]
            private static extern bool _ChangeWindowMessageFilter(WM message, MSGFLT dwFlag);


  • 相关阅读:
    Docker 中国官方镜像加速
    mysql主从同步
    hadoop相关
    Mac上Ultra Edit的激活
    ansible安装应用软件
    Docker学习第二天-容器
    wwnjld团队第二轮迭代成员分数
    第二轮迭代发布报告
    wwnjld第二轮迭代测试报告
    12.24会议记录
  • 原文地址:https://www.cnblogs.com/riskyer/p/3320251.html
Copyright © 2011-2022 走看看