Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有泛型接口的泛型基类_C#_Generics_Interface_Base - Fatal编程技术网

C# 具有泛型接口的泛型基类

C# 具有泛型接口的泛型基类,c#,generics,interface,base,C#,Generics,Interface,Base,我想创建一个基类,它有一些默认方法。这个基类应该使用一个通用接口 这可能吗?(因为下面的代码示例没有编译,所以问题出在T1、T2、T3->第一行) 公共抽象类ServiceBase,其中T:IService { 公共抽象IEnumerable搜索(T1查询); 公开摘要T3添加(T2输入); 公共布尔监视器() { 返回true; } } 我想使用的原因是,对于服务,我可以键入: public class WhatEverService : ServiceBase<IWhatEverSe

我想创建一个基类,它有一些默认方法。这个基类应该使用一个通用接口

这可能吗?(因为下面的代码示例没有编译,所以问题出在T1、T2、T3->第一行)

公共抽象类ServiceBase,其中T:IService
{
公共抽象IEnumerable搜索(T1查询);
公开摘要T3添加(T2输入);
公共布尔监视器()
{
返回true;
}
}
我想使用的原因是,对于服务,我可以键入:

public class WhatEverService : ServiceBase<IWhatEverService>
public类WhatEverService:ServiceBase
IWhatEverService继承自iSeries(T1、T2、T3和一些不同类型)

供参考:

公共接口IWhatEverService:IService

您还没有告诉编译器T1、T2和T3是什么,编译器也无法从使用中推断出这些类型

public abstract class ServiceBase<T,T1,T2,T3> where T : IService<T1,T2,T3>
公共抽象类ServiceBase,其中T:IService

确实可以编译,但在这种情况下,我需要从ServiceBase继承。关键是这3种类型已经在iWhateVerservices中定义了,在
iSeries设备
部分,您告诉编译器泛型
iSeries设备
接口将具有类型为T1、T2和T3的泛型参数。但您并没有告诉编译器T1、T2和T3是什么。告诉编译器“不要担心T1、T2、T3”的唯一方法是将它们与类名一起声明。有人知道在不传递4个参数的情况下这样做吗?
public interface IWhatEverService: IService<WhatEverType1, WhatEverType2, WhatEverType3>
public abstract class ServiceBase<T,T1,T2,T3> where T : IService<T1,T2,T3>