我有以下类(class):
public class OrderArticlesAdapter : RecyclerView.Adapter
{
public List<OrderArticleViewModel> listOfOrderArticles;
.....
.....
//constructor
public OrderArticlesAdapter(List<OrderArticleViewModel> orderArticles, ....., .....)
{
listOfOrderArticles = orderArticles;
......
}
}
我希望该类不仅能够处理 OrderArticleViewModel
列表而且还包含 Invoices
类型的列表以及任何其他类型。 OrderArticleViewModel
类看起来像这样:
public class OrderArticleViewModel
{
public string ArticleId { get; set; }
public string LotId { get; set; }
public string ArticleName { get; set; }
public string PriceDiscount { get; set; }
public string ArticlePrice { get; set; }
public string ArticleQuantity { get; set; }
public string ArticleTotalPrice { get; set; }
public string Barcode { get; set; }
public string ExpireDate { get; set; }
public string LotName { get; set; }
public string ArticlePriceAfterDiscount
{
get
{
decimal priceDiscount;
if (!Decimal.TryParse(PriceDiscount, out priceDiscount))
{
priceDiscount = 0;
}
decimal articlePrice = Convert.ToDecimal(ArticlePrice);
decimal discountAmount = Math.Round(articlePrice * (priceDiscount / 100), 4);
decimal articlePriceAfterDiscount = articlePrice - discountAmount;
return articlePriceAfterDiscount.ToString();
}
}
}
Invoices
类看起来像这样:
public class Invoices
{
public string ArtId { get; set; }
public string Name { get; set; }
public string Quantity { get; set; }
public string Price { get; set; }
public string Sum { get; set; }
public string Discount { get; set; }
public string PriceWodiscount { get; set; }
public string Id { get; set; }
}
ArticleId
, ArticleName
, ArticleQuantity
, PriceDiscount
, ArticlePrice
, Discount
, ArticlePriceAfterDiscount
来自类(class)OrderArticleViewModel
对应属性ArtId
, Name
, Quantity
, Discount
, Price
, Sum
来自类(class)Invoices
。我该如何制作OrderArticlesAdapter
构造函数能够接收 OrderArticleViewModel
的通用列表或Invoices
或任何其他类型,而不破坏我已经使用 OrderArticlesAdapter
实例的代码的功能?
最佳答案
创建另一个构造函数,在其中将发票列表转换为 ArticleViewModel 列表:
public class OrderArticlesAdapter : RecyclerView.Adapter
{
public List<OrderArticleViewModel> listOfOrderArticles;
public OrderArticlesAdapter(List<OrderArticleViewModel> orderArticles, ....., .....)
{
listOfOrderArticles = orderArticles;
}
public OrderArticlesAdapter(List<Invoice> invoices)
{
listOfOrderArticles = invoices.Select(MapToArticleVM).ToList();
}
private OrderArticleViewModel MapToArticleVM(Invoice invoice)
{
return new OrderArticleViewModel
{
ArticleId = invoice.ArtId,
// ...
};
}
}
请注意,结果列表将丢失一些属性,例如,因为 Invoice
不包含 Barcode
。
关于c# - 如何更改类的构造函数以接收已创建的类和构造函数的对象的通用列表? (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50945856/