Я пытаюсь выяснить способ автоматически бросить что-то действие или Func и лучшее, что я могу придумать что-то вроде этого:Почему я не могу использовать метод делегата с расширением?
[TestFixture]
public class ExecutionTest
{
public void BadMethod()
{
throw new Exception("Something bad happened");
}
[Test]
public void TestBadMethod()
{
// Want this, but it won't work!!
// BadMethod.Execute().IgnoreExceptions();
// Ick
((Action)BadMethod).Exec().IgnoreExceptions();
// Still ick
((Action)BadMethod).IgnoreExceptions();
// Do not want
ExtensionMethods.Exec(BadMethod).IgnoreExceptions();
// Better but still meh
this.Exec(BadMethod).IgnoreExceptions();
}
}
public static class ExtensionMethods
{
public static Action Exec(this Action action)
{ return action; }
public static Action Exec(this object obj, Action action)
{ return action; }
public static void IgnoreExceptions(this Action action)
{
try { action(); }
catch {}
}
}
Там должен лучше/легкий способ сделать это, какие-то мысли?
Не уверен, что это проблема перегрузок метода, потому что компилятор определит, какой из них назвать. Но это лучший ответ, который я видел до сих пор ... –