C# 泛型 传递具有相同属性的不同对象

本文关键字:属性 对象 泛型 | 更新日期: 2023-09-27 18:32:12

我不确定我正在做的事情是否可能。我有两种方法。 这两个方法的主体完全相同,但是方法的参数和返回值的签名不同。 传入参数的属性已更改,对象不同但具有相同的属性名称(它们是两个不同的实体框架实体)。 从基本对象继承两者是不可能的(我认为),因为这些是实体框架实体。

最好展示示例然后谈论它..

方法 1

private static IQueryable<MapListing> ApplyMapFilterToListings(IQueryable<MapListing> listings, ListingSearchCriteria criteria, bool boolIsPremiumListingsOnly = false)
{
    //setting properties of listings (of type MapListing Entity)
}

方法 2

private static IQueryable<vListing> ApplyFilterToListings(IQueryable<vListing> listings, ListingSearchCriteria criteria, bool boolIsPremiumListingsOnly = false)
{
    //setting properties of listings (of type vListing Entity)
}

一般来说,我不介意函数的主体是否完全相同,但是在这种情况下,很多属性都是有条件地设置的,我想使这些方法完全相同,并且证明它们不同步。

我重新调整智商的另一个原因是<>因为我回来后对它做了其他事情

C# 泛型 传递具有相同属性的不同对象

在我看来,

你有两个选择。

  1. 实施interface

    如果创建包含所有共享属性和方法的接口,则可以创建一个接受该接口的方法,或者在使用泛型时创建实现该接口的所有类型。(是的,可以在 EF 生成的类中实现接口)

  2. 使用dynamic

    dynamic关键字会给你很大的自由。您可以假装属性或方法是否存在。当您传入对象时,会在运行时检查这一点。您应该小心使用dynamic,因为它会损害您的软件质量。

首选第一个选项。这是最好的解决方案,但它要求您有权访问类。如果类位于第三方库中,则dynamic可能是您唯一的解决方案。

相关文章: