Я использую шаблон выражения-строителя для создания объекта. Одна из вещей, которую настраивает построитель выражений на объекте, - обработчики событий. Вот некоторые демонстративное псевдо-код:Копировать список вызовов из одного делегата в другой
public class TargetObject
{
public event Action SomeEvent;
}
public class ObjectBuilder
{
private Action handler;
public TargetObject GetObject()
{
TargetObject target = new TargetObject();
target.SomeEvent += handler;
return target;
}
public ObjectBuilder AddHandler(Action handler)
{
this.handler += handler;
return this;
}
}
То, что я хотел бы, скорее, чем пишут:
this.handler += handler;
Чтобы передать вызова-лист инкапсулированный членом «обработчика» в ObjectBuilder, чтобы " SomeEvent "в цель. В противном случае ObjectBuilder не получит сбор мусора, потому что в «SomeEvent» объекта TargetObject будет содержаться ссылка на обработчик объекта ObjectBuilder.
Возможно ли это?
EDIT: В соответствии с просьбой, вот некоторые примеры кода, который потребляет эти классы:
class Program
{
static void Main(string[] args)
{
TargetObject target = new ObjectBuilder()
.AddHandler(DoSomething)
.GetObject();
}
private static void DoSomething()
{
}
}
Являются ли два объекта одного типа? – 2010-11-30 16:32:38
Какие два объекта? – joniba 2010-11-30 16:38:43