私の CTO (最高技術責任者) は、基本クラスに 1 つの関数を記述し、子クラスのすべてのプロパティにアクセスできるようにする方法を考え出すように私に依頼しました。これが私が思いついたものです-
基本クラス
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;}
}
Program.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 : 多くのエンティティを持つ製品を使用しています。これらのエンティティには異なるプロパティがあります。これらすべてのプロパティに 1 か所でアクセスして操作できるようにしたいと考えています。この機能はまさにそれです。すべてのデータにアクセスできる 1 つの場所です。