c# - 是否可以定义一个可以具有泛型方法的非泛型接口(interface)?

标签 c# oop generics

我想知道是否可以改进这段代码。 IProvider 实现 IProvider 并覆盖 Request(...)。我想将它们组合成一个界面。但我仍然需要一个类型化和非类型化的界面来使用。

有没有一种方法可以将它们结合起来,或者这就是界面的外观?

public interface IProvider
{
    DataSourceDescriptor DataSource { get; set; }

    IConfiguration Configuration { get; set; }

    IResult Request(IQuery request);
}

public interface IProvider<T> : IProvider
{
    new IResult<T> Request(IQuery request);
}

最佳答案

如果泛型类型参数 T 仅在 Request 方法的上下文中相关,则仅将该方法声明为泛型:

public interface IProvider
{
    DataSourceDescriptor DataSource { get; set; }

    IConfiguration Configuration { get; set; }

    IResult Request(IQuery request);

    IResult<T> Request<T>(IQuery request);
}

关于c# - 是否可以定义一个可以具有泛型方法的非泛型接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5247245/

相关文章:

php - 您将如何为这个应用程序建模?

c++ - 将抽象类实现为其他类的接口(interface)而无需 vtable 开销

java - 使用泛型编译错误

c# - 在 TFS API 中,如何获取给定测试的完整类名?

c# - 根据用户选择显示 block 信息的代码

oop - Doctrine2 ORM 不会保存对 DateTime 字段的更改

swift - 来自泛型类型的初始化器不会在 swift 中被继承?

java - 通用通配符类型不应在返回参数中使用

c# - .NET 精简框架 (C#) : Add checkbox to Listbox

c# - 将可空整数 (int?SomeValue = NULL) 作为参数传递给存储过程