Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通用辅助方法c#_C#_Asp.net - Fatal编程技术网

通用辅助方法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);
}