当我真的需要从两个类继承时如何处理 CS1721?

sha*_*oth 5 .net c# inheritance multiple-inheritance

在我的 C# 代码中,我想要一个CustomIdentity继承自System.MarshalByRefObjectSystem.Security.Principal.GenericIndentity类的类。

但是,当我尝试编写这样的继承时,C# 会以CS1721 错误表示我不能直接从多个类继承。

现在在这种情况下很容易克服这个问题 - 我将继承自IIdentity,添加GenericIdentity成员变量并IIdentity通过该成员变量重新实现所有方法。

但是,如果我想从具有大量方法的两个类继承,我该怎么办?

Mar*_*ell 5

你不知道。你不能。

C# 或 .NET 不支持这一点。

您使用多个接口实现最多使用单个(非object)继承。在大多数情况下,即使是单一继承也被严重过度使用;p

要吸收这些方法,您必须使用某种封装。为了完整性,扩展方法提供了一种在类型之间共享方法的方法。