我想获取正在创建的“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/

10-14 01:43