Как выставить класс C # в качестве интерфейса объектов com? - PullRequest
0 голосов
/ 08 марта 2012

У меня есть класс C # P2PLib.

 public int portRecv=10101;
    public int portSend = 10102;
    public int multicastPort=10103;
    int memberNum = 0;
    string data;
    string time;
    List<Member> MemberList = new List<Member>();
    public void DisplayMembers();
    public void start(...);
    public void join(..);
    public void leave(..);
    void add(...);
    void remove(...);

Как мне создать серверный код этого класса в моем взаимодействии взаимодействия между c # и c ++?

http://msdn.microsoft.com/en-us/library/aa645738(v=vs.71).aspx Пример показывает, как мы можем написать интерфейсы, которые могут быть группами методов

но я не совсем понимаю, как мои переменные, такие как portsend и другие, будут инициированы в клиентском коде c ++.

--- edit --- можно ли хранить постоянные данные через com-интерфейсы? например, список упомянутый выше? Смогу ли я создать объект этого класса в неуправляемом коде, взаимодействующем с com-объектом управляемого кода?

1 Ответ

1 голос
/ 08 марта 2012

Вы не можете выставлять поля в интерфейсе COM, поддерживаются только свойства и методы. В целом, это хорошая и широко распространенная практика в программировании на C #, здесь также помогает:

public class PortWrapper {
   public int ReceivePort {
      get { return portRecv; }
      set { 
         if (value == portRecv) return;
         if (value < 256 || value > 65535) throw new ArgumentOutOfRangeException();
         portRecv = value;
         setupReceiver();
      }
   }
   // etc..

   private int portRecv=10101;
}

Попади в эту яму успеха, фактически объявив интерфейс в своем коде C #. Это хорошая идея, позволяющая скрыть детали реализации класса с помощью [ClassInterface (ClassInterfaceType.None)] и предоставить чистый интерфейс с помощью [InterfaceType (ComInterfaceType.InterfaceIsDual)]. Это естественный способ COM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...