gpt4 book ai didi

c# - 是否可以定义实现多个接口(interface)的任何类型的列表?

转载 作者:可可西里 更新时间:2023-11-01 07:43:03 26 4
gpt4 key购买 nike

考虑以下类层次结构:

public interface X { void Foo(); }

public interface Y { void Bar(); }

public class A : X, Y
{
public void Foo() {}
public void Bar() {}
}

public class B : X, Y
{
public void Foo() {}
public void Bar() {}
}

有什么方法可以定义一个列表(或任何通用类型),它可以同时包含 A的和B的,同时允许我将所述列表的内容视为 XY ? IE。一些东西可以让我按照这样的方式写一些东西:

var list = ???
list.Add(new A());
list.Add(new B());
list.First().Foo();
list.Last().Bar();

编辑

澄清一下,我目前处理的类型是 ObservableCollection<T> ( A ) 和 ReadOnlyObservableCollection<T> ( B ),我感兴趣的接口(interface)是 IList<T> ( X ) 和 INotifyCollectionChanged (Y)。显然,我无法更改它们的类层次结构来满足我的需求,因此我需要一个不同的解决方法。

最佳答案

不,除非你声明另一个接口(interface):

IAB : IA, IB {}

并让两个类都实现它。

你也可以实现你自己的集合类,比如List<IFirst, ISecond> ,这将允许。

关于c# - 是否可以定义实现多个接口(interface)的任何类型的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27913542/

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