C# 对象’;父对象的当前实例

C# 对象’;父对象的当前实例,c#,object,instance,parent,C#,Object,Instance,Parent,具有以下对象: 第三行将触发子列表的“添加”方法。 我希望获得SubsiderList父级的当前实例,如下所示: public new void Add(T Subordinate) { T Manager = Subordinate.ParentInstance; // then it will be possible to see the current value of // the property "LastName" for Anakin with "Man

具有以下对象:

第三行将触发子列表的“添加”方法。 我希望获得SubsiderList父级的当前实例,如下所示:

public new void Add(T Subordinate)
{
    T Manager = Subordinate.ParentInstance;

    // then it will be possible to see the current value of
    // the property "LastName" for Anakin with "Manager.LastName"
}

你不能那样做,因为你没有提到经理。以下是我将如何实施它:

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;
     }
}
公共类员工
{
公共字符串FirstName{get;set;}=”“;
公共字符串LastName{get;set;}=”“;
公共字符串HiredDate{get;set;}=”“;
私有列表_下属=新列表();
public ReadOnlyCollection substances=>_substances.AsReadOnly();
公共无效添加下级(员工)
{
_下属。添加(员工);
//经理是“这”
var managerLastName=this.LastName;
}
}

将下级列表公开为
ReadOnlyCollection
允许其他类读取列表,但阻止它们直接更新列表。因此,只有
addsubsible()
方法可以用于添加员工,您可以根据需要使用经理的信息。

不使用带有某些参数的构造函数来链接对象
为什么会有这种约束?该项目是开发人员的框架。强制为构造函数传递参数既不方便也不优雅。真正不优雅的是将日期和时间存储为字符串这是为了从外部系统导入过程,通过SOA进行的数据交换是字符串。“通过SOA[as]字符串进行数据交换”的所有客户端(和服务器)是否在同一时区?如果你想让它“正确转换”,你需要非常小心。日期和时间都很艰难。使用字符串作为日期和时间的持久化机制更加困难。及时安排一些返工。很难一试就搞定。你已经看透了我的心思。这正是我目前使用的方法。但是,尽管如此,我还是梦想着“下属。添加”之类的东西。感谢您的回答。创建自己的下属列表类的问题是您丢失了对经理的引用。除非您在列表的构造函数中引用,否则您可以这样声明:
public IPublicList substances=new substanlist(this)。然后构造函数将其存储为私有字段。我知道这一点。但我不想走这条路,没关系。然后需要在
Employee
类本身中保留“adding”逻辑。
public new void Add(T Subordinate)
{
    T Manager = Subordinate.ParentInstance;

    // then it will be possible to see the current value of
    // the property "LastName" for Anakin with "Manager.LastName"
}
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;
     }
}