c# - 在 C# 中使用泛型进行条件比较

标签 c# asp.net sql-server entity-framework

在我的场景中,我有两种类型的对象。一个计划和一个等级。每个共享特定的值,而层级有 3 个附加值(速率、最小值和最大值)。

我想创建一个通用方法来根据以下条件有条件地评估新对象是否可以写入数据库:

创作:

  1. 一层:((o1.Rate!=o2.Rate) || ((o1.Start!=o2.Start) && (o1.End!=o2.End))) && (MinVal &&最大值)
  2. 等级或计划:(o1.Name!=o2.Name)
  3. 一个等级或套餐:只有一个可以有(Active == true),其余必须为false。

是否可以为这样的事情创建一个通用方法?如果是这样,有没有这样的例子?或者有人有什么建议吗?

谢谢!

更多: 所以我有一个对象列表,在实际将其写入数据库之前,我需要将新创建的对象与数据库中的其他对象进行比较。

最佳答案

为了使其工作,通用方法(或类型)需要一个约束,使其能够理解您列出的所有单个属性(RateDateMinValMaxValueStartEnd)。

如果您担心的所有类型都派生自相同的基类或接口(interface),则不需要泛型 - 只需构建一个接受该基类型的两个参数的方法即可。

但是,如果他们不这样做,泛型可能不太适合这里 - 然而,还有另一种选择。您可以使用 dynamic 通过运行时绑定(bind)有效地使用这些属性。请注意,如果您传递一个没有这些属性的类型的参数,它将在运行时失败。

关于c# - 在 C# 中使用泛型进行条件比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7110457/

相关文章:

c# - where 子句中的多个列值

sql - 为什么临时表有效,而永久表无效?

ASP.NET-图片未显示

ruby-on-rails - has_many :through across multiple databases

c# - ASP.NET页面如何实现异步加载?

c# - NHibernate 尝试在不存在的列中查询

asp.net - 最佳 ASP.NET 应用程序部署方法

c# - asp.net 中的水平 ListView

c# - 从 linq var 添加项目到列表

c# - 实现多个接口(interface)的参数