私はさまざまな金融分野を表すダースまたはそれ以上のプロパティを持つクラスを持っています。私は、別々のフィールドのそれぞれでいくつかの計算を実行する必要がある別のクラスを持っています。これらの計算メソッド内のコードは、計算を行うフィールドを除いて同じです。クラスのプロパティをメソッドのパラメータとして渡すにはどうすればよいですか?
私はパラメータとしてプロパティ名を渡すことができ、それぞれのプロパティの12のメソッドではなく、すべての実行作業を行うメソッドが1つしかありませんか?
また、これは反射を介して達成できると確信していますが、ラムダがこの同じ種類のファッションで使用され、これが使用できる候補であるかどうか疑問に思っていた他のコードで見ました。要求され、ここでの例であるとして
:
public class FinancialInfo
{
public virtual DateTime AuditDate { get; set; }
public virtual decimal ReleasedFederalAmount { get; set; }
public virtual decimal ReleasedNonFederalAmount { get; set; }
public virtual decimal ReleasedStateAmount { get; set; }
public virtual decimal ReleasedLocalAmount { get; set; }
public virtual decimal ReleasedPrivateAmount { get; set; }
// more fields like this
}
public class FinancialLedger()
{
public virtual DateTime? BeginDate { get; set; }
public virtual DateTime? EndDate { get; set; }
public virtual IList<FinancialInfo> Financials { get; set; } //not actual implementation, but you get the idea
public decimal GetTotalReleasedFederalAmountByDate()
{
if (BeginDate == null && EndDate == null)
return 0;
decimal total = 0;
foreach (var fi in Financials)
{
if (someCondition)
if (someSubCondition)
total += fi.ReleasedFederalAmount;
else if (someOtherCondition)
if (someOtherSubCondition)
total += fi.ReleasedFederalAmount;
else if (anotherCondigion)
total += fi.ReleasedFederalAmount;
}
return total;
}
public decimal GetTotalReleasedNonFederalAmountByDate()
{
// same logic as above method,
// but it accesses fi.ReleasedNonFederalAmount;
}
// More methods the same as the previous, just accessing different
// members of FinancialInfo
}
私の目標はただGetTotalAmountByDate(と呼ばれる一つの方法を)作り、開始日に渡すことで、終了日およびプロパティの名前(ReleasedFederalAmountかReleasedLocalAmountなど)にアクセスする必要があります。
これは私が達成しようとしていることを正確に表してくれることを願っています。
を答えるために容易になります。このような
何かがトリックを行う必要がありますそのような関数の例、クラスプロパティの外観を垣間見ることができます。 –
私は、あなたの計算方法が金融分野のクラスのインスタンスと、(計算を実行するプロパティの値である)値をパラメータとして取ることができないのはなぜか不思議です。あなたの質問を照らすためにいくつかのスタブコードを投稿できますか? –
は、クラスのプロパティで使用した関数の定義と同じ型を使用します。 –