Çeşitli finansal alanları temsil eden bir düzine kadar özelliği olan bir sınıfım var. Bu alanların her birinde ayrı ayrı hesaplamalar yapması gereken başka bir dersim var. Bu hesaplama yöntemlerinin içindeki kod, hesaplamayı yaptığı alan haricinde aynıdır.Bir sınıfın bir özelliğini bir yöntemin parametresi olarak nasıl geçirebilirim?
Bir özellik adını parametre olarak iletebilmem için bir yol var mı ve yalnızca her bir özellik için 12 yöntem yerine tüm gerçekleştirme işini yapan bir yöntem var mı?
Ayrıca, bunun yansıma yoluyla gerçekleştirilebileceğine eminim, ama lambdaların da aynı şekilde kullanıldığı başka bir kodda gördüm ve bunun kullanılabileceği bir aday olup olmadığını merak ediyorum.
İstendiği gibi, burada bir örnek:
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
}
Amacım sadece GetTotalAmountByDate (denilen bir yöntem olun) ve bir başlamak tarihe geçmek olduğunu ve bitiş tarihi ve mal adı (ReleasedFederalAmount veya ReleasedLocalAmount, vb.) Erişmesi gerekiyor.
Umarım bu, neyi başarmaya çalıştığımı gösterir.
Size bir paylaşabilirsiniz cevap vermek daha kolay olacaktır Böyle bir fonksiyon örneği ve sınıf özelliklerinin neye benzeyebileceğine dair bir bakış. –
Hesaplama yönteminizin neden finansal alan sınıfının örneğini ve parametre olarak bir değeri (yani, hesaplamayı gerçekleştirmek istediğiniz mülkün değeri) almadığını merak ediyorum. Sorunuzu aydınlatmak için bazı kodlama kodu gönderebilir misiniz? –
, sınıfın özelliklerinde kullandığınız işlev tanımlamanızda aynı türü kullanır. –