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或者接口定义
解决方案 »
- DATAGRIDVIEW中CHECKBOX选后行的值相加问题
- 关于点绕点旋转
- 是不是javascript的执行效率远远大于C#?
- 考验程序员们的基本功:实体类的字段与属性的问题
- C#中,枚举类型的一点疑惑
- 如何判断2个区域有交集!!!!
- 菜鸟提问:在SQL中未找到数据的时候如何返回到C#
- 一个很麻烦的判断!请高手指点.(在线等)
- 有一列字段我不想在表格控件中显示,又想操作它,怎么办?
- 帮我看看这段代码,我只能运行一次,运行第二次的时候,抛出异常:UCDemo.jike文件正在使用,我想应该是没有关闭,但是不知道如何关闭,
- ExtFloodFill 实现填充的问题,请教大虾!
- 问题解决了散分,领分在另一个页面
上面设置标志为BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static的出错信息是
未找到方法“ClassLibrary1.Class1.GetName”。 干脆找不到了
而设置标志为BindingFlags.InvokeMethod的出错信息是
未将对象引用设置到对象的实例。c等于null