如何表达参数需要在C#中实现多个接口?

Onu*_*nur 2 c# interface-design interface

与此问题类似:我如何需要一个方法参数来实现多个接口? 我想要一个方法参数来实现几个接口.

接口应以任意方式组合,我不想为每个有效组合创建接口.

想一个文件.有可能:

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

...

如果我想表达一个参数需要是一个可写的,生成的存档我不想生成,IWritableGeneratedArchive因为有太多的组合,我想用它与一些我无法修改的现有类.

伪代码:

void WriteTo( IWritable + IGenerated + IArchive file)
{
   //...
}
Run Code Online (Sandbox Code Playgroud)

Onu*_*nur 8

我在这里找到的解决方案:我如何需要一个方法参数来实现多个接口?调整为C#.

积分归迈克尔迈尔斯所有

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);
    }
}
Run Code Online (Sandbox Code Playgroud)