gpt4 book ai didi

c# - 我如何表达一个参数需要在 C# 中实现多个接口(interface)

转载 作者:行者123 更新时间:2023-11-30 19:02:23 25 4
gpt4 key购买 nike

类似于这个问题:How can I require a method argument to implement multiple interfaces?我想要一个方法参数来实现多个接口(interface)。

接口(interface)应该可以任意组合,我不想为每个有效组合创建一个接口(interface)。

想想一个文件。它可以是:

  1. 可读 => IReadable
  2. 可写 => IWriteable
  3. 存档 => IArchive
  4. 自动生成 => IGenerated

...

如果我想表达一个参数需要是一个可写的、生成的存档我不想生成 IWritableGeneratedArchive 因为有太多的组合而且我想将它与一些现有的类一起使用我不能修改。

伪代码:

void WriteTo( IWritable + IGenerated + IArchive file)
{
//...
}

最佳答案

我在这里找到的解决方案:How can I require a method argument to implement multiple interfaces?针对 C# 进行了调整。

学分转到Michael Myers

internal interface IF1
{
void M1();
}

internal interface IF2
{
void M2();
}

internal class ClassImplementingIF1IF2 : IF1, IF2
{

public void M1()
{
throw new NotImplementedException();
}

public void M2()
{
throw new NotImplementedException();
}

}

internal static class Test
{

public static void doIT<T>(T t) where T:IF1,IF2
{
t.M1();
t.M2();
}

public static void test()
{
var c = new ClassImplementingIF1IF2();
doIT(c);
}
}

关于c# - 我如何表达一个参数需要在 C# 中实现多个接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13069385/

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