public interface I1
{
void MyMethod();
}
public class C1 : I1
public void MyMethod()
public static class MyMethodEncapsulation
public static void MyMethod<T>(T item) where T : I1
item.MyMethod();
public static void MyMethod<T>(T item, Action<T> myMethod)
myMethod(item);
MyMethodEncapsulation.MyMethod(new C1(), c1 => c1.MyMethod());
public static void MyMethod<T>(T item)
var getMethod = typeof(T).GetMethod("MyMethod");
if (getMethod == null)
throw new InvalidOperationException();
getMethod.Invoke(item, new object[0]);
MyMethodEncapsulation.MyMethod(new C1());
dynamic di = item;
di.MyMethod();
object di = item;
if (<MyMethod>o__SiteContainer0<T>.<>p__Site1 == null)
<MyMethod>o__SiteContainer0<T>.<>p__Site1 =
CallSite<Action<CallSite, object>>.Create(
new CSharpCallPayload(RuntimeBinder.GetInstance(), false, false, "MyMethod", typeof(object), null));
<MyMethod>o__SiteContainer0<T>.<>p__Site1.Target(<MyMethod>o__SiteContainer0<T>.<>p__Site1, di);