我建了一个实体类
 public class MemberInfo
    {
        private string strMemberID = “0”;
        public string MemberID
        {
            get
            {
                return strMemberID;
            }
            set
            {
                strMemberID = value;
            }
        }
        private string strMemberName = "0";
        public string MemberName
        {
            get
            {
                return strMemberName;
            }
            set
            {
                strMemberName = value;
            }
        }
    }
然后在里面写了一个方法来返回这个实体类
[Guid("66C93CF0-B586-4085-A142-664B0ADBAF93")]
    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface IInserData
    {
        [DispId(1)]
        MemberInfo ShowMemberInfo(); 
       
    }
 [Guid("334708BF-98FA-43bd-9A75-69255BB69A09")]
    [ClassInterface(ClassInterfaceType.None)]
    [ProgId("GameDataStore.GameDataInsert")]
    public class GameDataInsert : IInserData
    {
public MemberInfo ShowMemberInfo()
        {
            MemberInfo mem = new MemberInfo();
            mem.MemberID = "10";
            mem.MemberName = "afsdaf";
            return mem;
        }
}
生成COM组件后,在C++里面调用这个方法返回对象,COM里面能不能这样写,还有怎么在C++里面调

解决方案 »

  1.   

    http://blog.csdn.net/pinping1314/archive/2005/02/22/297663.aspx
      

  2.   

    I had an detailed example of how C++ calls C# as COM here:
    vc怎么调用c# 写的dll呢。 最好有个例子
      

  3.   

    简单的调用我都知道,但怎么返回一个MemberInfo的调用,C++应该怎么写
      

  4.   


    COM是建立在接口上的,你没有提供MemberInfo的接口,C++怎么知道如何去用它呢?
    简单的概念比简单的调用重要。.Net CCW通过IDispatch提供了MemberInfo的一些信息。
    如果事先知道名字并不怕麻烦的话,你也可以通过IDispatch接口来操作MemberInfo:
    先GetIDsOfNames,然后Invoke。