C#:如何从基类属性派生新属性的值?

C#:如何从基类属性派生新属性的值?,c#,treenode,C#,Treenode,我想给treenode对象添加一个属性 我希望新属性值(即key)是从Treenode.Fullpath派生的 我如何实现它 class ItemNode:TreeNode { internal string key { get; set; } = base.FullPath.split("\\")[1]; //Error } 在初始化字段时无法计算该值。现在太早了。对象仍在构造中,编译器无法确保基部分处于有效状态,因此不允许访问其数据 我建议您自己实现该属性,以便可以控制逻辑何时

我想给treenode对象添加一个属性

我希望新属性值(即key)是从Treenode.Fullpath派生的

我如何实现它

class ItemNode:TreeNode
{
    internal string key  { get; set; } = base.FullPath.split("\\")[1]; //Error
} 

在初始化字段时无法计算该值。现在太早了。对象仍在构造中,编译器无法确保基部分处于有效状态,因此不允许访问其数据

我建议您自己实现该属性,以便可以控制逻辑何时执行。然后你可以随时加载它。例如,一个简单的延迟加载可以如下工作:

class ItemNode:TreeNode
{
    internal private string _key = null;

    internal public string Key
    {
        get
        {
            if (_key == null) _key = base.FullPath.split("\\")[1];
            return _key;
        }
        set 
        {
            _key = value;
        }
     }
}

在初始化字段时无法计算该值。现在太早了。对象仍在构造中,编译器无法确保基部分处于有效状态,因此不允许访问其数据

我建议您自己实现该属性,以便可以控制逻辑何时执行。然后你可以随时加载它。例如,一个简单的延迟加载可以如下工作:

class ItemNode:TreeNode
{
    internal private string _key = null;

    internal public string Key
    {
        get
        {
            if (_key == null) _key = base.FullPath.split("\\")[1];
            return _key;
        }
        set 
        {
            _key = value;
        }
     }
}

“不工作”不是问题的技术描述我更改了问题标题。“不工作”不是问题的技术描述我更改了问题标题。