您的位置:首页 > 编程语言 > C#

C#实现COM:简单示例

2013-11-05 16:11 615 查看
1    绪

算上最近一次使用C#编写COM,已经是第二次为了在LR中调用DLL而编写COM了。

这次编写的COM仍然是为了让VC++ DLL调用,因为本人更熟悉在LR中使用C语言脚本。当然,在LR中其实也是可以直接使用C# COM的,通过VBS脚本就可以了,非常简单。

下面以一个案例形式,记录在VS2010中建立的COM过程的主要结构。

 

2    编程实现

2.1  设置

语言选择C#,工程类型选择COM类库工程。然后是进行如下一些设置:

打开project/your project properties/application,设置程序集名称和缺省名字空间,最好一致。

在build\output,勾选register for cominterop。

在signing,勾选sign the assembly,并设置一个强名称,建议不加密。

另外,编辑properties/AssemblyInfo.cs ,设置:

[assembly: ComVisible(true)]

默认情况下ComVisible是设为false的。

完成上述设置后,编写yourClass.cs文件,这个是你的主类文件,下面是示例。关于guid的生成,可以看这篇文章:http://www.cnblogs.com/Real_Dream/articles/1577938.html

2.2  源码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;
using System.Runtime.InteropServices;  //for comvisible

namespace ZHBEnDeLib
{
[Guid("9A26F178-28D6-43AC-9C1A-2CD9F9D01246")]
public interface IZHBEnDe
{
[DispId(1)]
void Initialize();
[DispId(2)]
void Dispose();
//加密API
[DispId(3)]
string EnStr(string toEn);

//解密API
[DispId(4)]
string DeStr(string toDe);
}

[Guid("B1612D7D-3DB0-4CC3-8C3C-3504CBC77BAD")]
[ClassInterface(ClassInterfaceType.None)]
public class ZHBEnDe : IZHBEnDe
{
public void Initialize()
{

}
public void Dispose()
{

}

//加密API
public string EnStr(string toEn)
{
//your encrypt code        }

//解密API
public string DeStr(string toDe)
{
//your decrypt code
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: