C++封装C#中的事件

背景:

  用户要求我们提供给他们API,如果这些API都是用C#写的DLL,而用户要求API为C++的 DLL,这种情况下如果不重写API,就需要将C# DLL里面的内容封装成C++ DLL,再将C++DLL提供给他们。

这里针对c#中的事件,记录一下如何使用C++来封装c#的事件:

1.创建一个简单的C# DLL实例:

a.新建一个c# DLL项目,取名:TestDotNetDLL,添加一个类:Customer,这个类里面有两个属性、一个自定义委托和三个事件(将要对这三种事件进行封装):

public class Customer
{
	private string _surname = "Default";
	private int _age = 20;

	public string Surname
	{
		get
		{
			return _surname;
		}
		set
		{
			_surname = value;
		}
	}

	public int Age
	{
		get { return _age; }
		set { _age = value; }
	}

	public delegate void MyEventHandler(object sender, MyEventArgs e); //自定义委托

	//三个事件
	public event EventHandler OnMyTestEvent;  //默认委托型事件

	public event MyEventHandler OnMyTestEvent1; //自定义委托事件

	public event EventHandler<MyEventArgs> OnMyTestEvent2; //泛型委托事件

}

b.在添加一个类型:MyEventArgs,继承自:EventArgs,包含两个额外属性:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace TestDotNetDLL
{
    public class MyEventArgs : EventArgs
    {
        #region Properties


        private string _surname="XiaoHong";
        private int _age=17;


        public string Surname
        {
            get
            {
                return _surname;
            }
            set
            {
                _surname = value;            
            }
        }


        public int Age 
        {
            get
            {
                return _age;
            }
            set
            {
                _age = value;
            }
        }


        #endregion
    }
}

2.新建一个C++DLL空项目,取名:CplusplusDLLUsingDotNetDLL,用来封装刚刚新建的C# DLL

a.在项目属性中设置一下:Common Language Runtime Support (/clr)

b.在common properties中添加引用C# DLL:

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值