我的 CTO(首席技术官)要求我想出一种方法,让他可以在基类中编写一个函数,并可以访问子类的所有属性。这是我想出的-
基类
class Assets
{
public Assets getPropertyVal(Assets asObj)
{
PropertyInfo[] propInfos = asObj.GetType().GetProperties();
string strAttributeValue = "10";
foreach (PropertyInfo propInfo in propInfos)
{
// Getting the value
var propValue = propInfo.GetValue(asObj, null);
// Setting the value
propInfo.SetValue(asObj, Convert.ChangeType(strAttributeValue, propInfo.PropertyType), null);
}
return asObj;
}
}
儿童班
class House : Assets
{
public int rooms{get; set;}
}
程序.cs 文件
class Program
{
static void Main(string[] args)
{
House hsObj = new House();
hsObj.rooms = 5;
Assets asObj = hsObj.getPropertyVal(hsObj);
// Returns asObj as JSON
}
}
现在这工作正常,但我只是想知道在 C# 中是否有更好的方法来做到这一点。
请注意,我们不知道 子类中将存在哪些属性,因此必须在运行时确定。
更新:说清楚,我只是想知道是否有更好的方法来访问子类属性,一种不使用反射的方法。需要注意的重要一点是,我们不知道子类可能具有哪些属性。
更新#2 :我正在使用具有许多实体的产品。这些实体具有不同的属性。我希望能够在一个地方访问和使用所有这些属性。这个功能正是如此。这是我可以访问所有数据的一个地方。