对象的父级当前实例

时间:2018-12-18 03:50:05

标签: c# object instance parent

具有以下对象:

kubectl -n <namespace> describe pod <pod-name>

SubordinateList对象位于Employee对象内部,以某种方式使Employee成为SubordinateList的父级。

如果我们将此代码放在下面:

public class Employee
{
    public string LastName { get; set; } = "";

    internal class SubordinateList<T> : List<T>, IPublicList<T> where T : Employee
    {
        public new void Add(T Subordinate)    {    }
    }
    public IPublicList<Employee> Subordinates = new SubordinateList<Employee>();
}

第三行将触发SubordinateList的“ Add”方法。 我想像这样获取SubordinateList的父级的当前实例:

Anakin = New Employee();
Luke = New Employee();
Anakin.Subordinates.Add(Luke);

1 个答案:

答案 0 :(得分:0)

您无法通过该方式进行操作,因为您没有对经理的引用。这就是我的实现方式:

public class Employee
{
    public string FirstName { get; set; } = "";
    public string LastName { get; set; } = "";
    public string HiredDate { get; set; } = "";

    private List<Employee> _subordinates = new List<Employee>();
    public ReadOnlyCollection<Employee> Subordinates => _subordinates.AsReadOnly();

    public void AddSubordinate(Employee employee)
    {
        _subordinates.Add(Employee);
        //the manager is 'this'
        var managerLastName = this.LastName;
     }
}

将下级列表显示为ReadOnlyCollection允许其他类读取该列表,但阻止它们直接更新列表。因此,只有AddSubordinate()方法可用于添加员工,您可以在其中使用经理的信息来做所需的事情。