C#实现COM:简单示例

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
        }
}

你可能感兴趣的:(C#实现COM:简单示例)