C# 调用 COM+ 失败

wartim 2008-10-08 01:58:33

COM:
[Guid("F91BDA41-01CC-4cff-8569-4E366834A4CF")]
public interface ISharpObject2
{
string Name
{
get;
set;
}
String GetName();
}

public class Class1 : ServicedComponent, ISharpObject2
{
public Class1()
{
}

private string m_strName;

public string Name
{
get
{
return m_strName;
}
set
{
m_strName = value;
}
}
public String GetName() { return Name; }
}

调用COM
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Type type = Type.GetTypeFromProgID("ClassLibrary1.Class1");
Object obj = Activator.CreateInstance(type);
object c = type.InvokeMember("GetName", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, obj, new Object[] { });
MessageBox.Show(c.ToString());
}
}
type,obj都找到了,GetName也找到了(没有提示找不当"GetName"方法),但c老是返回null,怎么回事?
看看组件服务COM已经有了,而且接口里也存在GetName
我希望能后期绑定的方法访问COM,就像delphi里可以用createoleobject直接访问中间层一样,无需引用任何的dll或者接口定义
...全文
80 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiaxintaiyang 2008-10-08
  • 打赏
  • 举报
回复
呵呵,突然的灵感啊。
lovehongyun 2008-10-08
  • 打赏
  • 举报
回复
汗..那接分了.
wartim 2008-10-08
  • 打赏
  • 举报
回复
晕了,查了半天,等贴上csdn,立马发现问题了,自己搞定了。。。
wartim 2008-10-08
  • 打赏
  • 举报
回复
晕了,查了半天,等贴上csdn,立马发现问题了,自己搞定了。。。
wartim 2008-10-08
  • 打赏
  • 举报
回复
更正:
上面设置标志为BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static的出错信息是
未找到方法“ClassLibrary1.Class1.GetName”。 干脆找不到了
而设置标志为BindingFlags.InvokeMethod的出错信息是
未将对象引用设置到对象的实例。c等于null

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧