C#如何将新变量的基类中的变量值更改为派生类
Posted
技术标签:
【中文标题】C#如何将新变量的基类中的变量值更改为派生类【英文标题】:C# How to change the Variable Value in the BaseClass if the new Variable into the derived Class are changed 【发布时间】:2017-03-09 13:07:31 【问题描述】:我有一个更大的 Projekt,如果派生类中的变量值发生更改,我想将变量值更改为 BaseClass。 这里是一个简单的例子。
我想要的是,如果我将值 Obj.ModelTyp.Name 更改为“Name123”,那么 Base.ModelTyp.Name 会自动获得相同的值“Name123”。 有没有简单的方法来做到这一点?
谢谢史蒂芬
命名空间问题
课堂节目
静态无效主要(字符串 [] 参数)
DataObjekt Obj = 新的 DataObjekt();
Obj.ModelTyp.Name = "Name123"; // is there a Way to Change Base.ModelTyp.Name
// if Obj.ModelTyp.Name is changed?
Obj.ModelTyp.Data = "4567";
Obj.DoSomithing();
public class FirstBaseClass
public FirstBaseClass() ModelTyp = new BaseType();
public BaseType ModelTyp get; set;
public class SecondBaseClass : FirstBaseClass
public void DoSomithing()
string Test = this.ModelTyp.Name; // there is nothing because Base.ModelTyp.Name
//but I Want to have "Name123"
public class DataObjekt : SecondBaseClass
public DataObjekt() ModelTyp = new ObjektData();
new public ObjektData ModelTyp get; set;
public class BaseType
public string Name get; set;
public class ObjektData : BaseType
public string Data get; set;
【问题讨论】:
您真的想要在您的 DataObjekt 类中有两个名为 ModelTyp 的属性(一个是 BaseData 类型,一个是 ObjektData 类型)? 【参考方案1】:您的班级关系似乎非常复杂和令人费解。您可能应该考虑简化一下。
无论如何,您的代码现在不起作用的原因是因为您隐藏了基类的ModelTyp
属性,并在DataObjekt
中创建了另一个新的ModelTyp
属性。希望您已经知道这一点。
但是您真的不想创建一个全新的、独立的财产,是吗?您只想将ModelTyp
的类型更改为ObjektData
。因此,您可以让DataObjekt.ModelTyp
在构造函数中引用与FirstBaseClass.ModelTyp
相同的东西:
public DataObjekt()
ModelTyp = new ObjektData();
base.ModelTyp = this.ModelTyp; // <- this line
【讨论】:
谢谢 :),这是我正在寻找的行 :)以上是关于C#如何将新变量的基类中的变量值更改为派生类的主要内容,如果未能解决你的问题,请参考以下文章