c# - 需要初始化的接口(interface)实现

标签 c# interface constructor initialization

我想提取一个需要初始化的类的接口(interface)。

public class Example<T>
{
    public Example(SomeData data)
    {
        // initialize self with data
    }

    public IEnumerable<T> GetObjects(SomeData data)
    {
        // extract data
    }
}

问题是我们无法编写一个强制使用非默认类型构造函数的接口(interface)。我当然可以将我的类(class)更改为:

public interface IExample<T>
{
    void Initilize(SomeData data);
    IEnumerable<T> GetObjects(SomeData data);
}

public class Example<T> : IExample<T>
{
    public void Initilize(SomeData data)
    {
        // initialize self with data
    }

    public IEnumerable<T> GetObjects(SomeData data)
    {
        // extract data
    }
}

但这不一样,因为在实例化此类型时可以直接调用 GetObjects,这将导致实例未初始化的异常。

我还有哪些其他选择?

最佳答案

因为这只是一个接口(interface),所以您不应该关心构造函数。该接口(interface)定义了实现可以做什么,但没有具体说明它们是如何做的或调用了哪些顺序方法。

你怎么能现实地说将来不会有一些工作方式不同且不需要构造函数的接口(interface)实现?

关于c# - 需要初始化的接口(interface)实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11670732/

相关文章:

c# - 如何将接口(interface)对象传递给 WebMethod?

java - 在没有默认构造函数的情况下调试 XStream

c# - 无法使用 API 更改 Power BI 连接字符串

c# - 如何使 if 语句显示基于当前时间的 xml 属性

c# - 如何使用Fileupload读取文件内容

c# - 匿名委托(delegate)似乎不强制执行类型检查

interface - 什么是空接口(interface)用于

typescript - 我可以覆盖 TypeScript 接口(interface)中的键吗?

java - 如果父类(super class)没有默认构造函数,为什么此 Java 代码中的子类有默认构造函数?

c++ - 无法在构造函数中使用大括号括起来的列表 - C++