繁体   English   中英

通用助手方法c#

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM