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.GetTypeActivator.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/

10-13 08:50