[英]Generic helper method c#
我可以创建自动通用辅助方法吗? 让我解释。
这就是我现在的做法:
item.slp_spot_lang_prop.GetAvailable<slp_spot_lang_prop>(Model.LanguageAlternatives).slp_title
然后我有这个辅助方法
public static T GetAvailable<T>(this IEnumerable<ILanguageEntity> helper, IQueryable<langa_language_alternative> languageAlt)
{
return (T) helper.SingleOrDefault(d => d.LanguageId == languageAlt.Single(e => e.langa_sitent_id == (int)d.SiteEntityId && e.langa_entid == d.EntityId && e.langa_wantedlangid == Global.SiteInfo.LanguageID).langa_availablelangid);
}
我想要做的就是简单
item.slp_spot_lang_prop.GetAvailable(Model.LanguageAlternatives).slp_title
类似的东西:
public static GetAvailable(this IEnumerable<ILanguageEntity> helper, IQueryable<langa_language_alternative> languageAlt)
{
var type = helper.GetEnumerator().Current.GetType().BaseType;
return (type) helper.SingleOrDefault(d => d.LanguageId == languageAlt.Single(e => e.langa_sitent_id == (int)d.SiteEntityId && e.langa_entid == d.EntityId && e.langa_wantedlangid == Global.SiteInfo.LanguageID).langa_availablelangid);
}
我希望你明白我的意思。 返回类型应该是IEnumerable<IlanguageEntity>
的基本类型的单数,在示例中应该是slp_spot_lang_prop。
整个目的是摆脱GetAvailable<type>()
并且只有GetAvailable()
,因为它是一个我已经知道返回类型的辅助方法。
您是否尝试在泛型上使用约束来指定帮助程序类型(它不是帮助程序,但您知道吗)? 使用约束力T,从或衍生或实现约束类型,但允许从参数而不是指定引入T的实际值。 在您之前的声明中,它无法确定T是什么,因为它与任何参数无关。
public static T GetAvailable<T>(this IEnumerable<T> helper,
IQueryable<langa_language_alternative> languageAlt)
where T : ILanguageEntity
{
return (T) helper.SingleOrDefault(d => d.LanguageId == languageAlt.Single(e => e.langa_sitent_id == (int)d.SiteEntityId
&& e.langa_entid == d.EntityId
&& e.langa_wantedlangid == Global.SiteInfo.LanguageID).langa_availablelangid);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.