gpt4 book ai didi

c# - 如何更改类的构造函数以接收已创建的类和构造函数的对象的通用列表? (C#)

转载 作者:行者123 更新时间:2023-12-03 23:00:36 24 4
gpt4 key购买 nike

我有以下类(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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com