[英]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.