C# 在接口声明中使用where

C# 在接口声明中使用where,c#,generics,repository,C#,Generics,Repository,我有以下域对象: public class Bank : IEntity { } 以及以下假设: public interface IRepository<TEntity> where TEntity : IEntity { } 公共接口i假设,其中tenty:ienty { } 是否需要的tenty:ienty?这意味着什么,张力属于张力类型?当我使用TEntity之类的东西时,是否有命名约定?T代表什么?其中tenty:ienty意味着tenty类型必须实现ienty接口。

我有以下域对象:

public class Bank : IEntity
{
}
以及以下假设:

public interface IRepository<TEntity> where TEntity : IEntity
{
}
公共接口i假设,其中tenty:ienty
{
}

是否需要
的tenty:ienty
?这意味着什么,张力属于张力类型?当我使用TEntity之类的东西时,是否有命名约定?T代表什么?

其中tenty:ienty
意味着
tenty
类型必须实现
ienty
接口。换句话说,在您的通用接口中,
i假定
可以使用实现
IEntity
接口的类型。

其中TEntity:IEntity
意味着
TEntity
类型必须实现
IEntity
接口。换句话说,在您的通用接口中,您可以使用实现接口的类型。

这取决于您的设计时需要

您可以用
entity
替换generic
tenty
用法。但是,您将仅限于
IEntity
的成员


您必须强制转换
IEntity
成员才能访问其子类型成员。

这取决于您的设计时需要

您可以用
entity
替换generic
tenty
用法。但是,您将仅限于
IEntity
的成员


您必须强制转换
IEntity
成员才能访问其子类型成员。

您的
IRepository
是泛型类,
TEntity
是泛型类型参数。它就像是实际类型的占位符

tenty:ienty
意味着您将要求所使用的实际类型实现
ienty
,并且在实际存储库实现中,您可以引用接口
ienty
公开的方法和属性


是否需要它取决于存储库的预期用途。通常,类型限制用于强制执行泛型实现所依赖的类型的某些属性。

您的
IRepository
是泛型类,
TEntity
是泛型类型参数。它就像是实际类型的占位符

tenty:ienty
意味着您将要求所使用的实际类型实现
ienty
,并且在实际存储库实现中,您可以引用接口
ienty
公开的方法和属性


是否需要它取决于存储库的预期用途。通常,类型限制用于强制执行泛型实现所依赖的类型的某些属性。

您可以在中阅读有关泛型约束及其使用的信息,您可能需要查看以获取更多官方信息


< t >,这是一个严格的惯例,当C++被称为“”时,它会回到C++。(不过,这是一个您应该遵循的惯例。)

您可以阅读有关通用约束及其在中的使用的信息,您可能想查看更多官方报道

< t >,这是一个严格的惯例,当C++被称为“”时,它会回到C++。(然而,这是一个你应该遵循的惯例。)