gpt4 book ai didi

c# - 隐式定义的泛型类型,这可能吗?

转载 作者:太空宇宙 更新时间:2023-11-03 12:51:29 25 4
gpt4 key购买 nike

我目前想写一个通用的扩展方法。如果每个泛型类型在参数中都可用,我就不需要定义泛型类型:

//Extension Method
public static GridBoundColumnBuilder<TModel>
BoundEnum<TModel, TValue>(this GridColumnFactory<TModel> factory,
Expression<Func<TModel, TValue>> expression);

//I can call It this way, whitout setting <TModel, TValue>
columns.BoundEnum(c => c.SomeProp);

如果我想添加一个没有包含在参数中的泛型类型,我需要设置 <TModel, TValue> :

//Extension Method
public static GridBoundColumnBuilder<TModel>
BoundEnum<TModel, TValue, TEnum>(this GridColumnFactory<TModel> factory,
Expression<Func<TModel, TValue>> expression)

//How it works:
columns.BoundEnum<TModel, TValue, TEnum>(c => c.SomeProp);

有没有办法只写这个?

columns.BoundEnum<TEnum>(c => c.SomeProp);

编辑:这是完整的方法:

public static GridBoundColumnBuilder<TModel>
BoundEnum<TModel, TValue, TEnum>(this GridColumnFactory<TModel> factory,
Expression<Func<TModel, TValue>> expression)
where TModel : class
where TEnum : struct, IComparable
{
return factory.ForeignKey(expression, EnumHelper.ToSelectList<TEnum>());
}

最佳答案

如果编译器无法推断出所有泛型类型,那么您必须将它们全部传递。不支持部分推理。

关于c# - 隐式定义的泛型类型,这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35374371/

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