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

如何限制方法参数为MyAbstractClass子类且实现IMyInterface接口?

问题:如何让方法仅接受同时继承抽象类并实现接口的对象

现有方法

我有如下方法:

public MyData GetTransformedInfo(MyAbstractClass obj) {
    // Calculate and return relevant stuff
}

需求背景

MyAbstractClass可能存在子类及后代类,同时我有一个IMyInterface接口,许多类(包括但不限于MyAbstractClass的部分子类及其后代)都会实现它。现在需要修改上述方法,使其仅接受同时是MyAbstractClass后代且实现IMyInterface的对象。

我曾尝试类似GetTransformedInfo(MyAbstractClass:IMyInterface obj)的写法,但显然C#不支持这种语法。

考虑过用反射做运行时检查,但这种方式有诸多弊端:无法在编译期强制约束、性能损耗大、仅做兼容性检查就会产生内存分配。

已想到的方案

目前想到的方案是新增一个中间抽象类,让目标类继承它:

public abstract class MyAbstractClassWithIMyInterface : MyAbstractClass, IMyInterface {}

public MyData GetTransformedInfo(MyAbstractClassWithIMyInterface obj) {
    // Calculate and return relevant stuff
}

疑问

除了这种方案外,还有其他可行的实现方式吗?另外,如果是要求方法接受同时实现两个接口的对象,是不是也只能用类似的中间接口/类方案?这已经是最优解了吗?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 09:35:00