各位大仙,有没有关于用C#开发COM组件的书籍,论坛资料网站之类的?小弟因为基础薄弱急需充电~~
各位给介绍一下啊

解决方案 »

  1.   

    using System;
    using System.EnterpriseServices;namespace ComplusClassDemo
    {
    [Transaction(TransactionOption.Required)]
    public class ComplusClass:System.EnterpriseServices.ServicedComponent
    {
    public ComplusClass()
    {
    }
    public int add(int a,int b)
    {
    return a+b;
    }
    [System.EnterpriseServices.AutoComplete(true)]
    public bool DoWork()
    {
    InsertData();//beijing
    UpdateData();//shanghai
    // try
    // {
    // InsertData();
    // UpdateData();
    // ContextUtil.SetComplete();
    // }
    // catch(Exception e)
    // {
    // ContextUtil.SetAbort();
    // }
    // finally
    // {
    //
    // }
    }
    }
    }
    =================================================================
    using System;
    using System.EnterpriseServices;namespace ComplusTest
    { class Class1
    { [STAThread]
    static void Main(string[] args)
    {
    ComplusClassDemo.ComplusClass com=new ComplusClassDemo.ComplusClass();
    int num1=int.Parse(Console.ReadLine());
    int num2=int.Parse(Console.ReadLine());
    int num3=com.add(num1,num2);
    Console.WriteLine(num3);
    Console.ReadLine();
    }
    }
    }
      

  2.   

    这是一个加法组件对吗?怎么没有接口的定义啊?也没有GUID
      

  3.   

    C#中 可以这样 去开发一个COM组件:
    新建一个库类zk
    using System;
    using System.Runtime.InteropServices;
    namespace zk
    {
    public interface Itest
    {
    string hello(string text);
    }
    [Guid("45afe420-07af-4746-9594-fe950ca3c9e4")]
    public class myclass : Itest
    {
    public string hello(string text)
    {
    return text;
    }
    }
    }
    进入Visual Studio .NET 2003 命令提示
    进入工程所在的目录的bin\Debug\
    用命令 sn -k 1.snk 建立一个密锁对.
    修改AssemblyInfo.cs中
    [assembly: AssemblyVersion("1.0.0.0")]
    [assembly: AssemblyKeyFile("1.snk")]
    [assembly: AssemblyKeyName("1.snk")]
    编译找个库类会生成zk.dll
    命令提示符 输入 regasm zk.dll
    再输入 gacutil /I zk.dll
    提示Assembly successfully added to the cache
    此时注册表中 就会存在{45afe420-07af-4746-9594-fe950ca3c9e4}
    OK 了,此时就可以访问zk.myclass对象
      

  4.   

    命令提示符 输入 regasm zk.dll
    再输入 gacutil /I zk.dll
    提示Assembly successfully added to the cache
    这样注册的组件本身吗?如果一个组件有多个接口,就有多个GUID的时候,在注册表里显示哪个呢?
      

  5.   

    参考 http://blog.csdn.net/jonsonzxw/archive/2004/01/16/15938.aspx