繁体   English   中英

具有抽象参数的C#抽象方法

[英]C# Abstract methods with abstract parameters

嗨,我正在尝试实现一种结构,在该结构中,我需要能够在C#的抽象类中创建一个抽象方法,该类具有一个抽象对象作为参数。

public abstract class AbstractMapper
{
     protected abstract AbstractObject doLoad(AbstractObject obj);
}

public abstract class UserMapper
{
     protected override User doLoad(User obj)
     {

     } 
}

在此示例中,“ User”类扩展了“ AbstractObject”类……这给了我编译错误。 有人可以建议我如何实现上述目标吗?

在被限制为AbstractMapper的子类型的AbstractObject上使用通用类型参数:

public abstract class AbstractMapper<T> where T : AbstractObject
{
     protected abstract T doLoad(T obj);
}

public class UserMapper : AbstractMapper<User>
{
     protected override User doLoad(User obj)
     {
         ...
     } 
}

UserMapper正在扩展Object类,并且您试图覆盖不存在的方法(doLoad)。

此外,该方法的签名的返回类型为User,并且您不返回任何内容。

如果要让User类扩展AbstractObject类,请执行以下操作:

public class User : AbstractObject 
{
      protected AbstractObject doLoad(AbstractObject obj)
      {
            // do something here and return an instance of a class that extends Abstract object
            return null; // added to make it compile
      }
}

您是否知道受保护的访问修饰符意味着它仅在类内部和子类中可见? 阅读此: https : //msdn.microsoft.com/en-us/library/wxh6fsc7.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM