我有以下扩展方法,它断言属性(Id)包含指定的属性(TV):
public static void ShouldHave<T, TV, TT>(this T obj, Expression<Func<T, TT>> exp) {...}
该方法可以这样调用:
MyDto myDto = new MyDto();
myDto.ShouldHave<MyDto, RequiredAttribute, int>(x => x.Id);
编译就好了。我想知道是否可以从方法签名中删除 T 和 TT 。T 因为在 T 上调用了 ShouldHave 为什么不需要显式指定它。TT 是表达式 (x.Id) 中引用的属性的类型。