python調(diào)用c# dll實(shí)例

python 2.7
vs2015

image.png
namespace third_dll
{
    public abstract class AbsCore //抽象類
    {
        public abstract string methodA(); //抽象方法
        public string methodB()
        {
            return "methodB";
        }
    }

    public class AbsA : AbsCore
    {
        public override string methodA() //實(shí)現(xiàn)抽象方法
        {
            return "AbsA methodA";
        }
    }
    public class AbsB : AbsCore
    {
        public override string methodA() //實(shí)現(xiàn)抽象方法
        {
            return "AbsB methodA";
        }
        public new string methodB() //重寫methodB
        {
            return "B";
        }
    }


    public interface ICore //一個接口
    {
        string test();
    }

    public class IA :ICore
    {
        private string name = "IA";

        public string test() //實(shí)現(xiàn)接口方法
        {
            return name;
        }
        public string getName()
        {
            return name;
        }
        public void setName(string name)
        {
            this.name = name;
        }
    }

    public class IB : ICore
    {
        private string name = "IB";

        public string test() //實(shí)現(xiàn)接口方法
        {
            return name;
        }
    }
}

輸出動態(tài)鏈接庫


image.png
image.png
using System;
using third_dll;

namespace csharp2dll
{
    public class Test
    {
        public static string testStatic() //測試靜態(tài)方法
        {
            return "testStatic success";
        }

        public void testVoid() //測試void方法
        {
            Console.Out.WriteLine("testVoid success");
        }

        public string testString() //測試實(shí)例方法
        {
            return "testString success";
        }

        public string testString(string str1, string str2=";str2=null") //測試重載實(shí)例方法
        {
            return str1+str2;
        }

        public string testI(ICore i) //測試傳入java實(shí)例囤官,ICore的實(shí)現(xiàn)類型
        {
            return i.test();
        }

        public string testAbs(AbsCore abs)//測試傳入java實(shí)例讼呢,AbsCore的非抽象子類
        {
            return abs.methodA();
        }

        public ICore getI() //測試返回接口的c#實(shí)例
        {
            IA i = new IA();
            i.setName("hello");
            return I;
        }

        public AbsCore getAbs()//測試返回抽象類的c#實(shí)例
        {
            AbsA abs = new AbsA();
            return abs;
        }
    }
}

輸出動態(tài)鏈接庫


image.png

編譯后可得


image.png

image.png
image.png
# coding=utf-8
import clr  # pip install pythonnet

clr.AddReference('csharp2dll')
clr.AddReference('third_dll')

from csharp2dll import *
from third_dll import *

if __name__ == '__main__':
    AbsCore = AbsCore
    AbsA = AbsA
    AbsB = AbsB
    ICore = ICore
    IA = IA
    IB = IB
    Test = Test

    test = Test()
    print Test.testStatic()  # 測試靜態(tài)方法
    test.testVoid()  # 測試void方法
    print test.testString()  # 測試返回string的方法
    print test.testString("aaaaaa")  # 測試重載的方法
    print test.testI(IA())  # 測試c#實(shí)例入?yún)?    print test.testI(IB())
    print test.testAbs(AbsA())  # 測試c#實(shí)例入?yún)?    print test.testAbs(AbsB())

    i = test.getI()  # 獲得IA的實(shí)例
    print i.test()
    i.setName("c#")
    print i.getName()  # 輸出c#
    j = test.getAbs()  # 獲得AbsA實(shí)例
    print j.methodB()  # j的實(shí)際類型是AbsA, methodB即是AbsCore的methodB,故輸出"methodB"
image.png

為了朋友們的學(xué)習(xí),放出源碼。c#以vs2015打開两踏。python工程以pycharm打開
鏈接: https://pan.baidu.com/s/1pazt1UGp5DhYQYiEA3Kd5w
提取碼: ig74

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市兜喻,隨后出現(xiàn)的幾起案子梦染,更是在濱河造成了極大的恐慌,老刑警劉巖虹统,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弓坞,死亡現(xiàn)場離奇詭異隧甚,居然都是意外死亡车荔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門戚扳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忧便,“玉大人,你說我怎么就攤上這事≈樵觯” “怎么了超歌?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蒂教。 經(jīng)常有香客問我巍举,道長,這世上最難降的妖魔是什么凝垛? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任懊悯,我火速辦了婚禮,結(jié)果婚禮上梦皮,老公的妹妹穿的比我還像新娘炭分。我一直安慰自己,他們只是感情好剑肯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布捧毛。 她就那樣靜靜地躺著,像睡著了一般让网。 火紅的嫁衣襯著肌膚如雪呀忧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天寂祥,我揣著相機(jī)與錄音荐虐,去河邊找鬼。 笑死丸凭,一個胖子當(dāng)著我的面吹牛福扬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播惜犀,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼铛碑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了虽界?” 一聲冷哼從身側(cè)響起汽烦,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎莉御,沒想到半個月后撇吞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡礁叔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年牍颈,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片琅关。...
    茶點(diǎn)故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡煮岁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情画机,我是刑警寧澤冶伞,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站步氏,受9級特大地震影響响禽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜荚醒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一金抡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧腌且,春花似錦梗肝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至精续,卻和暖如春坝锰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背重付。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工顷级, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人确垫。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓弓颈,卻偏偏與公主長得像,于是被迫代替她去往敵國和親删掀。 傳聞我的和親對象是個殘疾皇子翔冀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評論 2 355