public void VariousWaysToInvokeDelegate() { StringProcessor del = DelegateActions.ToUpperCaseStatic; var input = "test"; var expectedOutput = "TEST"; var directCall = del(input); Assert.AreEqual(expectedOutput, directCall); var standardInvoke = del.Invoke(input); Assert.AreEqual(expectedOutput, standardInvoke); var dynamicInvoke = del.GetInvocationList()[0].DynamicInvoke(input); Assert.AreEqual(expectedOutput, dynamicInvoke); var asyncResult = del.BeginInvoke(input, null, null); var asyncInvoke = del.EndInvoke(asyncResult); Assert.AreEqual(expectedOutput, asyncInvoke); }