【问题标题】:How to derive two abstract classes in C#如何在 C# 中派生两​​个抽象类
【发布时间】:2013-03-15 12:25:41
【问题描述】:

我有应用程序结构 -

public abstract class a 
{
}
//defined in a.dll
public abstract class b
{
}
//defined in b.dll

//Above 2 DLL reference added in main project where I want to derive both of this abstract classee like

public abstract class proj : a, b
{
}

我能够推导出其中任何一个,但不能同时推导出两者。所以请指导我丢失的东西或我所做的错误编码。

【问题讨论】:

  • 如果你引用你得到的错误会很有帮助。例如,如果您收到错误 CS1721:类 'proj' 不能有多个基类:'a' 和 'b',则在您的问题中提供该信息。当其他人出现类似错误时,它更有可能被发现。

标签: c# .net c#-4.0 interface


【解决方案1】:

而不是从多个抽象类派生(这在 C# 中是非法的),而是从两个接口派生(根据定义它们是抽象的)。

【讨论】:

    【解决方案2】:

    您不能使用 C# 进行多重继承。但是,您可以通过使用interface 来实现此目的。

    public interface Ia 
    {
    
    }
    
    public interface Ib 
    {
    
    }
    
    public abstract class MainProject : Ia, Ib  
    {
    
    }
    

    C# 接口只允许方法、属性、事件和索引器的签名。您必须在 proj (MainProgram) 类中定义这些实现。

    【讨论】:

      【解决方案3】:

      您不能同时从两个类派生。您应该改用接口。

      public interface IFirstInterface
      {
      }
      public interface ISecondInterface
      {
      }
      
      public abstract class Proj : IFirstInterface, ISecondInterface
      {
      }
      

      现在从Proj 继承的类仍然需要实现两个接口中定义的所有方法和属性。

      【讨论】:

        【解决方案4】:
        public abstract class proj : a, b
        

        这是不可能的。 C# 不允许多重继承。

        【讨论】:

          猜你喜欢
          • 2011-02-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-16
          • 1970-01-01
          • 2013-11-30
          • 1970-01-01
          • 2012-04-22
          • 2020-03-13
          相关资源
          最近更新 更多