c# – 是否有可以实现的类?

前端之家收集整理的这篇文章主要介绍了c# – 是否有可以实现的类?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想写一个
X级(这个)哪个
继承自A(基础)可以
执行B(?)的方法,必须
实现C(接口)的成员.

实现A和C不是问题.但是由于X不能从多个类派生,所以X似乎不可能继承A和B的逻辑.注意A是非常重要的基类,B几乎是一个接口但包含可执行行为.我不希望B成为接口的原因是因为每个继承或实现它的类的行为都是相同的.

我是否真的必须将B声明为接口并为每个需要B行为的X实现完全相同的10行代码

两个月后
我目前正在学习C在UE4(虚幻引擎4)中使用它.
由于C比C#严格得多,它实际上包含描述此行为的模式实现idom术语:这些称为mixins.
您可以在第9页(第二段)上阅读有关C mixin here的段落.

解决方法

Do I really must declare B as an interface and implement the exact same 10 lines of code for each X that needs the behavIoUr of B?

是的,不是.你需要让B成为一个界面.但是,不应在所有接口实现中复制常见的方法实现.相反,他们应该进入接口B的类扩展:

public interface B {
    void MethodX();
    void MethodY();
}
public static class ExtensionsB {
    public static void MethodZ(this B b) {
        // Common implementations go here
    }
}

扩展方法提供了一种“水平”共享实现的方法,而不会让您的类继承自第二个类.扩展方法的行为就像它们是类的常规方法一样:

class X : A,B {
    public void MethodX() {...}
    public void MethodY() {...}
}
public static void Main(string[] args) {
    var x = new X();
    x.SomeMethodFromA();
    x.MethodX(); // Calls method from X
    x.MethodY(); // Calls method from X
    x.MethodZ(); // Calls method from ExtensionsB
}
原文链接:https://www.f2er.com/csharp/244823.html

猜你在找的C#相关文章