Если вы хотите иметь клиентское приложение, которое предоставит делегата, с которым люди могут соединиться, тогда да. Для этого вы бы использовали .net remoting.
Я использовал этот пример: http://www.codeproject.com/KB/dotnet/DotNetRemotingEventsExpl.aspx
По сути, вы собираетесь предоставить удаленный сервер, который публикует известный объект. Уловка с событиями состоит в том, что сервер должен знать о типе, к которому клиент подключает обработчики событий. Поэтому в этом случае вы также предоставляете абстрактный класс в качестве приемника событий.
В основном этот класс будет выглядеть примерно так:
public abstract class MyEventSinkClass : MarshalByRefObject
{
public abstract void MyAbstractEventHandler(string arg1, string arg2);
public void MyEventHandler(string arg1, string arg2)
{
MyAbstractEventHandler(arg1,arg2);
}
}
Тогда на стороне клиента они будут создавать класс и наследовать от MyEventSinkClass. Они помещают свою логику для обработки события в переопределение для MyAbstractEventHandler. Когда они подключают экземпляр, для которого они используют удаленное взаимодействие, вместо подключения, как обычно, им необходимо подключиться к своему экземпляру класса, который наследует MyEventSinkClass, к методу MyEventHandler. Затем, когда событие сработает, оно в конечном итоге вызовет переопределенный метод и выполнит их код.
Подробную информацию о настройке удаленного сервера и клиента можно найти по ссылке, которую я дал, это не сложно.