我想使用Reflection将所有属性从MyObject更新到另一个属性.我遇到的问题是特定对象是从基类继承的,并且不更新那些基类属性值.
以下代码复制顶级属性值.
public void Update(MyObject o)
{
MyObject copyObject = ...
FieldInfo[] myObjectFields = o.GetType().GetFields(
BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
foreach (FieldInfo fi in myObjectFields)
{
fi.SetValue(copyObject, fi.GetValue(o));
}
}
Run Code Online (Sandbox Code Playgroud)
我想看看是否有更多BindingFlags属性我可以用来帮助但无济于事.
public class SuperCar: Car
{
public bool SuperWheels { get {return true; } }
}
public class Car
{
public bool HasSteeringWheel { get {return true;} }
}
Run Code Online (Sandbox Code Playgroud)
如何设置派生Supercar的基类?
例如,我想简单地设置SuperCars基类,如下所示:
public void SetCar( Car car )
{
SuperCar scar = new SuperCar();
car.Base = car;
}
Run Code Online (Sandbox Code Playgroud)
基本上,如果我有Car对象,我不想手动遍历汽车的每个属性以设置SuperCar对象,我认为这是你可以做到的唯一方法,但如果你能以另一种方式做到这一点会好得多.
我刚刚看到以下代码,但我不理解构造函数声明中的基类派生.这是什么,这可能与序数方法有关吗?
public SplashAppContext(Form mainForm, Form splashForm) : base(splashForm)
{
this.mainForm = mainForm;
splashTimer.Tick += new EventHandler(SplashTimeUp);
splashTimer.Interval = 2000;
splashTimer.Enabled = true;
}
Run Code Online (Sandbox Code Playgroud)