gpt4 book ai didi

c# - 如何为 Page 和 UserControl 创建一个基类?

转载 作者:太空狗 更新时间:2023-10-29 23:10:11 24 4
gpt4 key购买 nike

Page 和 UserControl 的基类:

public class MyWebPage : System.Web.UI.Page { }

public class MyUserControl : System.Web.UI.UserControl { }

他们中的任何一个都可能使用的助手:

void SetSessionValue<T>(string key, T value) { Session[key] = value; }

我怎样才能实现如下目标?

public class WebObject // can't inherit from both Page and UserControl { 
protected void SetSessionValue<T>(string key, T value) {
Session[key] = value;
}
}

public class MyWebPage : WebObject { }

public class MyUserControl : WebObject { }

更新:我兴奋了片刻,希望我能以这种方式解决它,但遗憾的是它无法编译。

public class WebObject<T> : T
{
}
public class MyWebPage : WebObject<System.Web.UI.Page>
{
}

最佳答案

你不能。反正不容易。我建议只为页面和用户控件创建一个基类,并在两者中复制公共(public)代码。由于用户控件包含在页面中,您还可以将基本用户控件类中的方法委托(delegate)给基本页面类,只需将 Page 属性转换为您自己的类型即可:

// Code in the MyUserControlBase class
public int SomeCommonMethod() {
return ((MyBasePageType)this.Page).SomeCommonMethod();
}

您还可以通过创建由两个基类实现的接口(interface)并使用 DI 拦截方法和属性访问器调用,然后将其路由到实际提供实现的某种通用代理类,从而让您的生活变得悲惨。我可能不会去那里:)

关于c# - 如何为 Page 和 UserControl 创建一个基类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7840706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com