public DelegateReference(Delegate @delegate, bool keepReferenceAlive)
{
Check.Argument.IsNotNull(@delegate, "@delegate");
if (keepReferenceAlive)
{
_delegate = @delegate;
}
else
{
_weakReference = new WeakReference(@delegate.Target);
_method = @delegate.Method;
_delegateType = @delegate.GetType();
}
}