C#泛型中如何适应继承关系

小灰狼 小灰狼 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
一个父类,多个子类
父类中有共同属性,想用一个方法实现对这个公共属性的逻辑处理
我的项目里,定义了实体类的父类,都有一个主键属性 public long? Id,我要在一个方法中,实现从列表中找出指定主键的实体
但是在使用时,出现编译错


public class BaseEntity {
public long? Id { get; set; }
}

public class Employee : BaseEntity {
// 省略
}

public class Employee : BaseEntity {
// 省略
}

public class EntityUtil {
public static BaseEntity FindEntityInListById(List<BaseEntity> list, long id){
foreach(BaseEntity item in list){
if(item.Id == id){
return item;
}
return null;
}
}
}

public class MyBusiness {
public void f(){
List<Employee> employeeList = ......
// 下面语句编译错误,泛型的类型不一致
Employee emp = EntityUtil.FindEntityInListById(employeeList, 10L);
}
}

...全文

相关推荐

你了解C#的协变和逆变吗,看完这篇就懂了

主要介绍了你了解C#的协变和逆变吗,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

weixin_38631454

详解.NET 4.0中的泛型协变(covariant)和反变(contravariant)

主要介绍了详解.NET 4.0中的泛型协变(covariant)和反变(contravariant),本文讲解了协变和反变的背景知识、.NET 4.0引入的泛型协变、反变性、协变和反变的相互作用等内容,需要的朋友可以参考下

weixin_38682406

一篇文章看懂C#中的协变、逆变

1. 基本概念 官方:协变和逆变都是术语,前者指能够使用比原始指定的派生类型的派生程度更大(更具体的)的类型,后者指能够使用比原始指定的派生类型的派生程度更小(不太具体的)的类型。[MSDN] 公式:           协变:IFoo&lt;父类> = IFoo&lt;子类>;           逆变:IBar&lt;子类> =  IBar&lt;父类>; 暂时不理解没关系,您接着往下看。 2. 协变(Covariance) 1) out关键字      对于泛型类型参数,out 关键字可指定类型参数是协变的。 可以在泛型接口和委托中使用 out 关键字。[MSDN] 2) 鲁迅:一张图胜过千言万语(图小看不

weixin_38724370

C#协变与逆变解析[项目源码]

本文详细介绍了C#中的协变(Covariance)和逆变(Contravariance)概念及其应用。协变允许将子类泛型隐式转换为父类泛型,例如IEnumerable<Person>可以接受List<Student>;逆变则允许父类泛型隐式转换为子类泛型,例如Action<object>可以赋值给Action<string>。文章通过Person和Student的示例代码,解释了out(协变)和in(逆变)关键字的作用,并列举了C#中支持协变和逆变的常见接口(如IEnumerable<T>、IComparer<T>)和委托(如Func、Action)。最后,作者总结了协变和逆变在泛型接口、委托及数组中的实际应用场景,帮助开发者理解这一高级特性。

terraform7cloud

EssentialCSharp (《c#2.0本质论》)

《c#2.0本质论》书中所有程序源代码!!!

wakinchen0796
评论 2
收藏 已收藏
分享
返回顶部
小灰狼
C# 111,129 成员 642,538 内容