MethodName作为没有方法参数的类型参数

本文关键字:参数 类型参数 有方法 MethodName | 更新日期: 2023-09-27 18:10:04

是否可以创建一个以MethodName作为类型化参数的方法?我在编译时检查方法的名称后。我知道我可以做以下事情——传入方法名称的字符串:

public static DoStuff<TType>(Mock<TType> mockType, string methodName)
{
    var methods = mockType.GetMethods(BindingFlags.Public | BindingFlags.Instance)
                          .Where(method => method.Name == methodName && method.ReturnType == typeof(TResult))
                          .ToList();
    // ...
}

和使用:

var myType = new Mock<MyType>();
myType.DoStuff("Update");

但是有没有一种方法可以这样做:

var myType = new myType();
myType.DoStuff(m => m.Update)

在编译时求值,如果类型'MyType'上不存在'Update',则会抛出。

谢谢。

MethodName作为没有方法参数的类型参数

不,对不起。除非指定一个实际的泛型参数,否则无法进行编译时检查,这需要在编译时知道类型。