我有ChildClassA
,ChildClassB
和ChildClassC
。
它们都继承自ParentClass
。
如何为A
和B
声明已经实现的method
,但在C
中不需要?
-
ParentClass
中的实现没有意义,因为我只需要它在A
和B
中。 -
c#不支持多重继承(如果这是我最好的选择)。
-
接口不能帮助我,因为我不能在那里实现一个方法。
您要寻找的是一种组合形式:
using System;
public class Program
{
public static void Main()
{
var a = new ChildA();
a.SomeMethod();
var b = new ChildB();
b.SomeMethod();
var c = new ChildC();
// c.SomeMethod(); Doesn't have SomeMethod
}
}
public class ParentClass
{
}
public class ChildA : ParentClass, IHavingSomeMethod
{
private readonly IHavingSomeMethod _sms;
public ChildA()
{
_sms = new HavingSomeMethodService(); // Have it injected instead!
}
public void SomeMethod() => _sms.SomeMethod();
}
public class ChildB : ParentClass, IHavingSomeMethod
{
private readonly IHavingSomeMethod _sms;
public ChildB()
{
_sms = new HavingSomeMethodService(); // Have it injected instead!
}
public void SomeMethod() => _sms.SomeMethod();
}
public class ChildC : ParentClass
{
}
public interface IHavingSomeMethod
{
void SomeMethod();
}
public class HavingSomeMethodService: IHavingSomeMethod
{
public void SomeMethod()
{
Console.WriteLine("SomeMethod");
}
}
Try it out
ParentClass
继承
-
CommonClass
-
和
ChildClassC
CommonClass
继承
ChildClassA
- 和
ChildClassB
CommonClass
定义了method