我想获取正在创建的“BasePage”对象的类型。每个Page对象都基于BasePage。例如,我有一个Login.aspx并在我的代码后面,还有一个具有Display方法的类:
Display(BasePage page) {
ResourceManager manager = new ResourceManager(page.GetType());
}
在我的项目结构中,我有一个默认资源文件和一个伪翻译资源文件。如果我设置尝试这样的事情:
Display(BasePage page) {
ResourceManager manager = new ResourceManager(typeof(Login));
}
它返回翻译后的页面。经过一番研究,我发现page.GetType()。ToString()返回了“ASP_login.aspx”效果。如何获取类类型背后的实际代码,从而获得“Login”类型的对象,即源自“BasePage”?
提前致谢!
最佳答案
如果您的代码旁看起来像这样:
public partial class _Login : BasePage
{ /* ... */
}
然后,您将使用
Type
获得typeof(_Login)
对象。要动态获取类型,可以递归地找到它:Type GetCodeBehindType()
{ return getCodeBehindTypeRecursive(this.GetType());
}
Type getCodeBehindTypeRecursive(Type t)
{ var baseType = t.BaseType;
if (baseType == typeof(BasePage)) return t;
else return getCodeBehindTypeRecursive(baseType);
}
关于c# - ASP.Net和GetType(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/202073/