使用C#开发COM组件 各位大仙,有没有关于用C#开发COM组件的书籍,论坛资料网站之类的?小弟因为基础薄弱急需充电~~各位给介绍一下啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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(); } }} 这是一个加法组件对吗?怎么没有接口的定义啊?也没有GUID C#中 可以这样 去开发一个COM组件:新建一个库类zkusing 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对象 命令提示符 输入 regasm zk.dll再输入 gacutil /I zk.dll提示Assembly successfully added to the cache这样注册的组件本身吗?如果一个组件有多个接口,就有多个GUID的时候,在注册表里显示哪个呢? 参考 http://blog.csdn.net/jonsonzxw/archive/2004/01/16/15938.aspx 求助 关于Repeater嵌套查询 用户控件拖动的问题 问个关于xml的问题 求教如何取所查询数据的最小值 如何将XML 文件转换成byte 然后通过SOCKET传送 winform中label的拖放 菜虫问题:怎么把在dataGrid上面修改的数据并写进数据库? 写一个经典的正则表达式 这个问题迟迟不能解决,非常着急! 微软也要出linux?这个好像是假的吧!http://www.mslinux.org/ 问:怎样用c#调用EXCEL实现数据导出 20分求关于TABPAGE的问题,顶的人就不要进了!
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();
}
}
}
新建一个库类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对象
再输入 gacutil /I zk.dll
提示Assembly successfully added to the cache
这样注册的组件本身吗?如果一个组件有多个接口,就有多个GUID的时候,在注册表里显示哪个呢?