gpt4 book ai didi

c# - Stream/Infinite Stream接口(interface)定义

转载 作者:行者123 更新时间:2023-11-30 23:04:32 24 4
gpt4 key购买 nike

我想做的是:

public interface IRemove<out T>
{
T Remove();
bool IsCompleted { get; }
}

public interface IRemoveInfinite<out T> : IRemove<T>
{
bool IsCompleted { get { return false; } }
}

但这是无效的,因为我不能将实现放在 C# 接口(interface)中。

给定以下约束:

  1. 每个 IRemoveInfinite 也是一个自动 IRemove
  2. 确保没有办法成功编译 IRemoveInfinite,当 IsCompleted 被视为 IRemove 时曾设置为 false。
  3. 允许在已有父类的类上实现这些接口(interface)。
  4. 我希望能够在编译时强制接收无限流,如果某些函数没有办法处理它们的完成,它们可能需要无限流。

我如何编写此类接口(interface)或以其他方式封装它?

最佳答案

接口(interface)是一个契约的声明,但你试图将这个契约的实现插入其中。

也许你应该使用抽象类来定义行为:

public interface IRemove<out T>
{
T Remove();

bool IsCompleted { get; }
}

public abstract class RemoveInfinite<T> : IRemove<T>
{
public bool IsCompleted
{
get { return false; }
}

public abstract T Remove();
}

如果不能使用继承,就使用类的组合:

public class ClassRemove : RemoveInfinite<object>
{
public override object Remove()
{
return new object();
}
}

public class ClassA : SomeBaseClass, IRemove<object>
{
private RemoveInfinite<object> removeInfinite = new ClassRemove();

public object Remove()
{
return removeInfinite.Remove();
}

public bool IsCompleted
{
get { return removeInfinite.IsCompleted; }
}
}

关于c# - Stream/Infinite Stream接口(interface)定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49375116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com