You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中是否可要求对象实现多个接口成员,无需显式继承组合接口?

如何限定绑定属性传入的类型同时实现多个接口,无需显式继承自定义组合接口

问题描述

我正在开发一款类似ItemsControl的自定义控件,其包含可绑定的Items属性,为了让控件能够正常更新,该属性对应的绑定对象需要实现INotifyCollectionChanged接口。我希望用户可以绑定任意同时实现INotifyCollectionChanged和IList接口的对象。

我最初考虑的方案是定义一个组合接口,要求用户的自定义集合继承该接口:

public interface INotifyCollectionChangedAndList : INotifyCollectionChanged, IList { }

但该方案存在明显缺陷:官方标准库的ObservableCollection<T>虽然同时实现了INotifyCollectionChanged和IList两个接口,但并没有继承我自定义的INotifyCollectionChangedAndList接口,我也无权修改官方类的实现。同理,用户使用的第三方库中符合两个接口要求但不受自己控制的类型,也无法正常绑定。

请问是否有方法(包括反射等技术方案)可以限定传入的类型必须满足多个接口的所有要求,不需要该类型显式声明继承自定义的组合接口?

结论

该问题的答案是没有。可参考@benjamin的回答,该方案虽对控件开发者来说不是最优解,但在其他场景下是最接近预期实现效果的方案。


内容的提问来源于stack exchange,提问作者Michael Wagner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:54:03