SlovenianSearchQueryManager.ApplySloveniaQueries(rawQuery, page, pageSize, orderBy, out count);
是否可以通过将HttpContext.Current.Session [“ lang_name”]和“ SearchQueryManager”合并来获取SlovenianSearchQueryManager类;
HttpContext.Current.Session [“ lang_name”]是斯洛文尼亚语,所以一起是SlovenianSearchQueryManager
下次
HttpContext.Current.Session [“ lang_name”]是德语,所以在一起是
GermanSearchQueryManager
我试图使这种通用而不是
if (HttpContext.Current.Session["lang_name"] == "Slovenian)
{
SlovenianSearchQueryManager.ApplySloveniaQueries(rawQuery, page, pageSize, orderBy, out count);
}
else ...
我想做类似的东西
(HttpContext.Current.Session["lang_name"] + "SearchQueryManager").ApplySloveniaQueries(...
是否有可能做出这样的事情,例如存在SlovenianSearchQueryManager类型,它在不同的类库中。
最佳答案
使用Type.GetType和Activator.CreateInstance:
var queryManagerType = Type.GetType(HttpContext.Current.Session["lang_name"] + "SearchQueryManager");
var queryManager = Activator.CreateInstance(queryManagerType);
Activator.CreateInstance返回一个对象。您可能想要定义查询管理器将需要实现的接口。
public interface ISearchQueryManager {
void ApplyQueries(/* add parameters here */);
}
然后,可以将CreateInstance返回的对象强制转换为接口:
var queryManagerType = Type.GetType(HttpContext.Current.Session["lang_name"] + "SearchQueryManager");
var queryManager = (ISearchQueryManager)Activator.CreateInstance(queryManagerType);
queryManager.ApplyQueries(rawQuery, page, pageSize, orderBy, out count);
关于c# - C#中类的泛型调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4727475/