Tôi có một lớp học có hàng tá tài sản đại diện cho các lĩnh vực tài chính khác nhau. Tôi có một lớp khác cần thực hiện một số phép tính trên từng trường đó một cách riêng biệt. Mã bên trong các phương pháp tính toán đó giống hệt nhau ngoại trừ trường mà nó tính toán.Làm thế nào tôi có thể chuyển thuộc tính của một lớp như một tham số của một phương thức?
Có cách nào để tôi có thể chuyển tên thuộc tính làm tham số và chỉ có một phương pháp thực hiện tất cả công việc thực hiện thay vì 12 phương pháp cho mỗi thuộc tính không? Ngoài ra, tôi chắc chắn điều này có thể được thực hiện thông qua sự phản ánh, nhưng tôi đã nhìn thấy trong mã khác nơi lambdas được sử dụng trong cùng một loại thời trang và đã tự hỏi nếu đây là một ứng cử viên nơi này có thể được sử dụng.
Theo yêu cầu, đây là một ví dụ:
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
}
Mục tiêu của tôi là chỉ cần thực hiện một phương pháp gọi là GetTotalAmountByDate() và vượt qua trong một ngày bắt đầu và ngày kết thúc và tên của tài sản (ReleasedFederalAmount hoặc ReleasedLocalAmount, v.v.) cần truy cập.
Tôi hy vọng điều này mô tả chính xác những gì tôi đang cố gắng hoàn thành.
Nó sẽ được dễ dàng hơn để trả lời nếu bạn có thể chia sẻ một ví dụ về một hàm như vậy, và một cái nhìn thoáng qua về những đặc tính của lớp có thể trông như thế nào. –
Tôi tò mò tại sao phương pháp tính toán của bạn không thể thực hiện, ví dụ, trường hợp của lớp trường tài chính và giá trị (nghĩa là giá trị của thuộc tính mà bạn muốn thực hiện phép tính) làm tham số. Bạn có thể đăng một số mã sơ khai để chiếu sáng câu hỏi của bạn không? –
sử dụng cùng một loại trong chức năng defination của bạn, mà bạn đã sử dụng trong thuộc tính của lớp. –