Вы можете использовать отражение, чтобы сделать это автоматически.Я думаю, вы хотите что-то вроде этого:
public static void WireEvents(object subject)
{
Type type = subject.GetType();
var events = type.GetEvents()
.Where(item => item.EventHandlerType == typeof(InvalidDomainObjectEventHandler));
foreach (EventInfo info in events)
info.AddEventHandler(subject, new InvalidDomainObjectEventHandler(HandleDomainObjectEvent));
}
Затем все, что вам нужно сделать, когда вы создаете новый объект, это:
PurchaseOrder _purchaseOrder = new PurchaseOrder();
HelperClass.WireEvents(_purchaseOrder);
Не забывайте, что естьснижение производительности с отражением, которое будет очевидно, если вы создадите PurchaseOrder
s и другие подобные объекты в любых больших числах.
Редактировать - другие примечания: вам потребуется директива using System.Reflection
.В нынешнем виде этому коду требуется C # 3 для ключевого слова var
и .net framework 3.5 для метода Where()
(и - если он не сгенерирован автоматически - using System.Linq;
).
Как и у Дэвидасделано в более позднем ответе, его можно переписать, не меняя базовых функций для более ранних версий.