接口或抽象类来满足要求

mtt*_*mtt 5 .net c#

我希望有一个任何类型的UI(Web或窗口)的抽象视图.为了做到这一点,我必须使用Interface(IView),其中我只能应用关于视图的规则.实际上,我想设置一些基本的补充函数来提供它的继承性.

所以这样,我必须使用抽象类.问题是

1)接口只有规则2)视图(Web表单或窗口表单)不能继承,因为它已经从窗口或Web表单继承

我怎样才能做到这一点?非常感谢

And*_*are 5

您添加的函数是否会更改类的定义,或者您只是创建函数来操作已经是类的一部分的数据?

如果你需要重新定义这两个类的基类的方面,那么是的,你将需要改变你的继承结构.但是如果函数只是简单地操作已经是类的一部分的数据,那么我建议你使用接口并创建实用程序函数.

这是我的意思的一个笨拙的例子:

using System;

abstract class Pet { }

class Dog : Pet, IPet
{
    public String Name { get; set; }
    public Int32 Age { get; set; }
}

class Cat : Pet, IPet
{
    public String Name { get; set; }
    public Int32 Age { get; set; }
}

interface IPet
{
    String Name { get; set; }
    Int32 Age { get; set; }
}

static class PetUtils
{
    public static void Print(this IPet pet)
    {
        Console.WriteLine(pet.Name + " is " + pet.Age);
    }
}
Run Code Online (Sandbox Code Playgroud)

您的两个UI类可能以这种方式相关.我认为你需要以横切方式做的事情可以通过像我创造的实用方法来解决.我确实创建了PetUtils.Print方法作为扩展方法,因为这将创建实例方法的表达错觉.如果您不使用C#3,请this从中删除" " public static void Print(this IPet pet).