gpt4 book ai didi

c# - 避免通用参数

转载 作者:行者123 更新时间:2023-11-30 16:29:23 26 4
gpt4 key购买 nike

我有以下扩展方法断言属性 (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)中引用的属性的类型。

最佳答案

以下编译:

public static void ShouldHave<T, TT>(this T obj, Expression<Func<T, TT>> exp)
{...}

MyDto myDto = new MyDto();
myDto.ShouldHave(x => x.Id);

这省略了 TV 类型参数,这是您需要在调用站点显式指定通用参数的原因。如果您需要这个参数,那您就不走运了。

关于c# - 避免通用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6342373/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com