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);


  • 相关阅读:
    C语言博客作业01分支、顺序结构
    vue学习日记04
    vue学习日记01
    vue学习日记05
    vue学习日记02
    企业微信小程序注册遇到的一些事
    vue学习日记03
    Unix/Linux系统编程第十三章学习笔记
    OpenEuler 中C与汇编的混合编程(选做)
    《Unix/Linux系统编程》第五章学习笔记
  • 原文地址:https://www.cnblogs.com/riskyer/p/3320251.html
Copyright © 2011-2022 走看看