2008-12-10 8 views

Odpowiedz

6

Może to być bardzo proste. Ale jest wiele miejsc, w których nie jest to takie proste. To zależy w dużej mierze od tego, co twoja klasa musi zrobić i od tego, jak zamierzasz ją wdrożyć.

Niektóre kwestie do rozważenia:

  • Twoja klasa musi mieć konstruktora bez parametrów.
  • Nie może ujawnić metod statycznych.
  • Czy wdrażanie biblioteki DLL COM w globalnej pamięci podręcznej zespołu jest prawidłowe? Jeśli nie, musisz nadać mu silne imię i zarejestrować je przy użyciu regasm /codebase.
  • Czy obchodzi Cię, jakie identyfikatory GUID identyfikują klasę i jej interfejsy? Jeśli nie, możesz je przypisać, ale będą one za każdym razem inne (i każde miejsce) rejestrowane. Jeśli chcesz, aby identyfikatory GUID pozostały niezmienione w różnych instalacjach, musisz oznaczyć członków atrybutem Guid.
  • Czy zamierzasz używać domyślnego porządkowania typów danych między .NET i COM? Jeśli nie, będziesz musiał oznaczyć właściwości i metody atrybutem MarshalAs.
  • Czy to dla Ciebie ważne, jaki interfejs COM udostępnia Twoja klasa? Jeśli tak, będziesz musiał zająć się atrybutem InterfaceType.
  • Czy twoja klasa musi podnieść lub odpowiedzieć na zdarzenia? Jeśli tak, to mają wpływ na sposób projektowania interfejsu klasowego.

Istnieje bardzo dobry (jeśli przestarzały) artykuł o współdziałaniu z COM i .Net here. (Wiele rzeczy, o których mówi artykuł, takich jak generowanie bibliotek typów, jest teraz automatycznie przetwarzane.) I Microsoft's documentation jest aktualny, ale nie do końca tak szczegółowy.

5

Powinieneś użyć narzędzia regasm, aby zarejestrować zespół (tak jak robisz regsvr32 z serwerami COM). Następnie możesz go użyć z COM. Upewnij się, że jest zainstalowany w GAC. Rzeczy powinny mieć [ComVisible(true)], aby można je było wykorzystać z COM.

1

Istnieje opcja "COM dostępne" dla każdego projektu, który można wybrać. Następnie, oczywiście, musisz zarejestrować zespół, aby go użyć, ale o to chodzi.


musiałem iść na polowanie trochę go znaleźć na C# (jestem przyzwyczajony do VB.Net), ale można znaleźć opcję, klikając dwukrotnie na folder w oknie Solution Explorer Properties, wybierając zakładkę Application, a następnie kliknięcie przycisku Assembly Information....