Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 初始化时更新抽象类中的变量_C#_Wpf_Abstract Class - Fatal编程技术网

C# 初始化时更新抽象类中的变量

C# 初始化时更新抽象类中的变量,c#,wpf,abstract-class,C#,Wpf,Abstract Class,因此,在开始时,我喜欢设置一些变量,稍后将使用这些变量。我正在构建一些图形移动部件,在这里我必须为每个移动设置步数(如果X变为1,那么值变为1*Step…bla-bla) 我有MainWindowViewModel(短版本): DiagramObject类: public abstract class DiagramObject : ViewModelBase { public abstract double X { get; set; } public abst

因此,在开始时,我喜欢设置一些变量,稍后将使用这些变量。我正在构建一些图形移动部件,在这里我必须为每个移动设置步数(如果X变为1,那么值变为1*Step…bla-bla)

我有MainWindowViewModel(短版本):

DiagramObject类:

public abstract class DiagramObject : ViewModelBase
{
        public abstract double X { get; set; }
        public abstract string Xmeaning { get; set; }

        public abstract double Y { get; set; }
        public abstract string Ymeaning { get; set; }
}
因此,我在其中定义了“步骤”:

我的问题是如何在程序开始时从MainWindowViewModel更新DiagramNode类中的“xstep”、“ystep”和其他步骤

因此,当我开始程序时,步骤将被定义并更新为DiagramNode类-现在我已经在类中定义了direct


我希望我能给出足够的代码来理解这个概念(如果没有这样说的话)。如果有任何问题,请询问。

您的MainWindowViewModel需要实例化DiagramNode类的实例,以便可以访问属性来修改它们

public class MainWindowViewModel : ViewModelBase
{
    DiagramNode myDiagramNode = new DiagramNode();

    public MainWindowViewModel()
    {
        // Initialization
        Step = 3;
        myDiagramNode.xstep = 3;
    }
}
但是,通常情况下,更好的做法是将xstep和ystep等变量设置为私有,并使用能够处理值的设置/获取的访问器,如下所示

public class DiagramNode : DiagramObject
{
    private int xstep;

    public int XStep
    {
        get { return this.xstep; }
        set { this.xstep = value; }
    }

    ...
}

public class MainWindowViewModel : ViewModelBase
{
    DiagramNode myDiagramNode = new DiagramNode();

    public MainWindowViewModel()
    {
        myDiagramNode.XStep = 3;
    }
}

您可以通过构造函数重载来设置它们

公共类DiagramNode(int-xstep,int-ystep)
{
//设定你的价值观
}

public class MainWindowViewModel : ViewModelBase
{
    DiagramNode myDiagramNode = new DiagramNode();

    public MainWindowViewModel()
    {
        // Initialization
        Step = 3;
        myDiagramNode.xstep = 3;
    }
}
public class DiagramNode : DiagramObject
{
    private int xstep;

    public int XStep
    {
        get { return this.xstep; }
        set { this.xstep = value; }
    }

    ...
}

public class MainWindowViewModel : ViewModelBase
{
    DiagramNode myDiagramNode = new DiagramNode();

    public MainWindowViewModel()
    {
        myDiagramNode.XStep = 3;
    }
}