类似:How can I access an instance field in an abstract parent class via reflection? ,但只是名义上的,没有人实际使用或引用那里的反射。
约束:
public class ViewModel : BaseClass
{
public Car Car { get; set; }
}
public abstract class BaseClass
{
public object GetField(string field){
//return Car if .GetField("Car") is called
}
}
我认为这需要反射(reflection),但我无法完全理解它。如何访问本例中的 Car 字段?
最佳答案
试试这个:
[TestFixture]
public class TravisSerialisationTest
{
[Test]
public void GetPropertyValueTest()
{
var volvo = "Volvo";
var viewModel = new ViewModel() { Car = volvo };
var field = viewModel.GetField(() => viewModel.Car);
Assert.AreEqual(volvo,field);
}
}
public class ViewModel : BaseClass
{
public string Car { get; set; }
}
public abstract class BaseClass
{
public T GetField<T>(Expression<Func<T>> propertyExpression )
{
return propertyExpression.Compile().Invoke();
}
}
关于c# - 如何从抽象父类(super class)中引用子类的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12733339/