我正在学习C#和带有类约束的泛型,比如

public class GenericList<T> where T : Employee

我感到困惑,因为我在这里没有看到任何通用的东西.GenericList列表绑定到员工的类.这与我们从GenericList的构造函数注入Employee一样.

还是我错过了什么?

推荐答案

我在这里看不到任何普通的东西

这就是类型名称后面的<T>(GenericList).T是泛型参数的名称.

GenericList列表绑定到员工的类.

T可以是Employee,也可以是直接继承Employee或通过其他类型继承Employee的任何类型.

这与我们从GenericList的构造函数注入Employee一样.

不怎么有意思.您在构造函数中所做的实际上与泛型参数没有任何关系.泛型允许您修改类型.例如,你可以有这些不同的变量.

GenericList<Employee> a;
GenericList<FullTimeEmployee> b;
GenericList<PartTimeEmployee> c;

这些都是不同类型的.

依赖项注入只适用于类型的构造函数中的参数.是的,这些参数可以包括具有泛型参数的类型(例如,您可以要求ILogger<MyService>),但是您指定的T类型实际上没有类似的类型.

Csharp相关问答推荐

ß != ss与ICU进行不区分大小写的比较

更新数据库中的对象失败,原因是:Microsoft. EntityFrame Core. GbUpdateConcurrencyResponse'

使用特定格式的JsonConvert序列化对象

如何在Reflection. Emit中使用具有运行时定义的类型参数的泛型类型

处理. netstandard2.0项目中HttpClient.SslProtocol的PlatformNotSupportedException问题""

我需要两个属性类吗

如何使用ConcurentDictionary属性上的属性将自定义System.Text.Json JsonConverter应用于该属性的值?

当我使用NET6作为目标框架时,为什么DotNet使用NET8作为MS包?

在静态模式下实例化配置

EFR32BG22 BLE在SPP模式下与PC(Windows 10)不连接

在使用StringBuilder时,如何根据 colored颜色 设置为richTextBox中的特定行着色?

如何在Akka.NET中重新启动执行元时清除邮箱

如何在使用属性 Select 器时判断是否可以为空

如何使用类似于[SELECT*FROM&Q;&Q;WHERE&Q;]SQL查询的System.Data.Entity创建查询?

如何在一次数据库调用中为ASP.NET核心身份用户加载角色

为什么当我try 为玩家角色设置动画时,没有从文件夹中拉出正确的图像?

正在try 将自定义字体添加到我的控制台应用程序

Xamarin Forms应用程序中登录页面的用户名和密码编辑文本之间不需要的空格

ASP.NET核心中的授权,如何在DbContext启动之前提供租用ID

CsvHelper在第二次迭代时抛出System.ObjectDisposedException