通用辅助方法c#
我可以创建一个自动的泛型助手方法吗?让我解释一下 我现在就是这样做的:通用辅助方法c#,c#,asp.net,C#,Asp.net,我可以创建一个自动的泛型助手方法吗?让我解释一下 我现在就是这样做的: item.slp_spot_lang_prop.GetAvailable<slp_spot_lang_prop>(Model.LanguageAlternatives).slp_title 比如: public static GetAvailable(this IEnumerable<ILanguageEntity> helper, IQueryable<langa_language_alte
item.slp_spot_lang_prop.GetAvailable<slp_spot_lang_prop>(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);
}
publicstaticgetavailable(此IEnumerable帮助程序,IQueryable languageAlt)
{
var type=helper.GetEnumerator().Current.GetType().BaseType;
return(type)helper.SingleOrDefault(d=>d.LanguageId==languageAlt.Single(e=>e.langa\u sitent\u id==(int)d.SiteEntityId&&e.langa\u entid==d.EntityId&&e.langa\u wantedlangid==Global.SiteInfo.LanguageId).langa\u可用Langid);
}
我希望你明白我的意思。返回类型应该是IEnumerable
的基类型的单数,在本例中,基类型应该是slp\u spot\u lang\u prop
整个目的是摆脱
GetAvailable()
,只使用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);
}
publicstatict GetAvailable(此IEnumerable帮助程序,
IQueryable语言alt)
其中T:i语言实体
{
return(T)helper.SingleOrDefault(d=>d.LanguageId==languageAlt.Single(e=>e.langa\u sitent\u id==(int)d.SiteEntityId
&&e.langa_entid==d.EntityId
&&e.langa_wantedlangid==Global.SiteInfo.LanguageID).langa_可用LangId);
}
slp\u spot\u lang\u prop
,slp\u title
&langa\u sitent\u id
作为名称。整个大会都很糟糕。
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);
}
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);
}