gpt4 book ai didi

c# - 继承具有抽象属性的抽象类

转载 作者:太空宇宙 更新时间:2023-11-03 11:04:06 25 4
gpt4 key购买 nike

我有一个带有抽象属性的基类。我希望所有继承类都覆盖抽象属性。示例:

public class Person
{
public string Name{get;set;}
public string LastName{get;set;}
}

public class Employee : Person
{
public string WorkPhone{get;set;}
}

public abstract class MyBase
{
public abstract Person Someone {get;set;}
}

public class TestClass : MyBase
{
public override Employee Someone{get;set;} //this is not working
}

基类具有 Person 类型的 Someone 属性。我正在覆盖 TestClass 上的 Someone 属性。现在我想使用 Employee 类型而不是 Person。我的 Employee 类继承自 Person。我无法让它发挥作用。我应该怎么做才能避免这个问题?

感谢帮助!

最佳答案

问题是您可以将 Employee 分配给 Person 实例,但不能同时将 Person 分配给 Employee 实例。因此,您的二传手会折断。您要么需要摆脱 setter,要么使用私有(private)支持实例和一些看起来像这样的转换(我不推荐):

public class TestClass : MyBase
{
private Employee _employee;

public Person Someone
{
get
{
return _employee;
}
set
{
if(!(value is Employee)) throw new ArgumentException();
_employee = value as Employee;
}
}

关于c# - 继承具有抽象属性的抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16597653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com