C# 如何在ASP.NET页面中抽象属性

C# 如何在ASP.NET页面中抽象属性,c#,asp.net,C#,Asp.net,我使用的是aspx表单。我们所做的是为每种形式声明类似的属性。代码在末尾 所以我在想,如果我们可以有一个基类,它包含所有类似的内容,但是由于表单已经继承了Page类,所以在C中没有多重继承# 所以这里我们可以使用接口来实现这一点,我是oops新手,请让我知道这是可能的还是不可能的 public partial class Default2 : System.Web.UI.Page { public string ImagePath { get; set; } } 您不需要从两个类继承。

我使用的是aspx表单。我们所做的是为每种形式声明类似的属性。代码在末尾

所以我在想,如果我们可以有一个基类,它包含所有类似的内容,但是由于表单已经继承了Page类,所以在C中没有多重继承# 所以这里我们可以使用接口来实现这一点,我是oops新手,请让我知道这是可能的还是不可能的

public partial class Default2 : System.Web.UI.Page
{
    public string ImagePath { get; set; }
}

您不需要从两个类继承。您需要在两者之间创建一个类层

首先创建从页继承的类并添加属性:

public partial class MyPageBase : System.Web.UI.Page
{
    public string ImagePath { get; set; }
}
然后从基类继承所有其他类。在那里,您可以访问
页面
MyPageBase
中的所有内容:

public class MyPage : MyPageBase
{
    public string TestAccessBaseProp()
    {
        var foo = base.ImagePath;
    }

    public string SomeAdditionalProperty { get; set; }
}
你有两个选择

创建基类 您可以创建继承
System.Web.UI.Page
的基类,并在所有页面中继承此类:

public class BasePage : System.Web.UI.Page
{
    public string ImagePath { get; set; }
}
public partial class Default2 : BasePage
{
    ....
}
public partial class Default2 : System.Web.UI.Page, Interface1
{
    public string ImagePath { get; set; }
}
然后在页面中继承该类:

public class BasePage : System.Web.UI.Page
{
    public string ImagePath { get; set; }
}
public partial class Default2 : BasePage
{
    ....
}
public partial class Default2 : System.Web.UI.Page, Interface1
{
    public string ImagePath { get; set; }
}

创建一个接口 您可以创建如下界面:

public interface Interface1
{
    string ImagePath { get; set; }
}
然后在所有页面上继承此接口:

public class BasePage : System.Web.UI.Page
{
    public string ImagePath { get; set; }
}
public partial class Default2 : BasePage
{
    ....
}
public partial class Default2 : System.Web.UI.Page, Interface1
{
    public string ImagePath { get; set; }
}

如您所见,第一个选项(基类)比接口选项有一些优势。 使用基类时,只需定义和实现属性一次。使用接口时,还必须在每个页面上实现属性


这是因为接口仅用于定义对象上的属性和函数,而不是它们的工作方式。而基类已经可以实现属性和函数。

提供的答案对您有帮助吗?如果是,请考虑将正确答案标记为“接受”。如果没有,请继续询问。