我想获得一种我正在创建的“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 { /* ... */ }
然后你将获得typeof(_Login)的Type对象.要动态获取类型,您可以递归地找到它:
Type GetCodeBehindType() { return getCodeBehindTypeRecursive(this.GetType()); } Type getCodeBehindTypeRecursive(Type t) { var baseType = t.BaseType; if (baseType == typeof(BasePage)) return t; else return getCodeBehindTypeRecursive(baseType); }