Наша задача будет создать настоящий компонент COM+ используя NET. Смотрим код:
using System; using System.EnterpriseServices; using System.Reflection; [assembly: ApplicationName("MyComponent")] [assembly: AssemblyKeyFileAttribute("MyComponent.snk")] [Transaction(TransactionOption.Required)] public class MyComponent : ServicedComponent { [AutoComplete] public void Call( string message ) { Console.WriteLine("Callee called: " + message); } }
Первое это то, что класс должен быть унаследован от класса ServicedComponent который обеспечивает базовые возможности компонента. Обязательно нужно устойчивое имя и название компонента, все это мы описываем в атрибутах. У класса стаит атрибуты поддержки транзакций. Все можно собирать.
sn -k MyComponent.snk csc /target:library /r:System.EnterpriseServices.dll MyComponent.cs
При сборке я сразу генерирую имя с включаю его в проект. В результате в каталоге будет насколько файлов.
Здесь DLL с кодом самой компоненты и snk с ключом.