我不确定我所做的事情是否可行。 我有2种方法。 2种方法的主体完全相同,但参数和返回方法的签名都不同。传入的参数属性已更改且对象不同但具有相同的属性名称(它们是两个不同的实体框架实体)。不能从基础对象继承(我认为),因为这些是实体框架实体。
最好展示示例然后再谈谈..
方法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)
}
一般来说,我不介意函数的主体是否完全相同,但是在这种情况下,很多属性都是有条件设置的,我想让这些方法完全相同,并且证明它们不同步。
我还在退回IQueryable&lt;&gt;是因为我在返回后做了其他的事情
答案 0 :(得分:1)
我认为你有两种选择。
实施interface
如果创建包含所有共享属性和方法的接口,则可以创建一个接受该接口的方法,或者在使用泛型时创建实现它的所有类型。 (是,it is possible to implement an interface in EF generated classes)
使用dynamic
dynamic
关键字会为您提供很多自由。您可以假装存在属性或方法。传入对象时,会在运行时检查此项。您应谨慎使用dynamic
,因为它可能会损害您的软件质量。
第一种选择是首选。这是最好的解决方案,但它要求您可以访问类。如果课程在第三方库中,dynamic
可能是您唯一的解决方案。