簡體   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