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

C#中如何从多共享属性类提取公共接口?求工具推荐

解决方法

工具自动生成接口

  • JetBrains ReSharper:选中所有7个目标类(DT2、IP2、OPDT2等),右键选择「重构」→「提取接口」,工具会自动扫描所有类的公共成员,你只需要在弹出窗口里勾选tpl属性,就能一键生成包含该属性的接口,同时自动给选中的类添加接口实现。
  • Visual Studio 进阶重构:先给其中一个类提取包含tpl的接口,再依次选中其他6个类,右键选择「快速操作和重构」→「实现接口」,VS会自动匹配公共成员,帮你完成接口实现,比纯手动编写效率高很多。

手动辅助批量处理

如果没有付费工具,用文本编辑器的正则匹配也能快速搞定:

  1. 把所有7个类的代码粘贴到VS Code或Notepad++里
  2. 用正则表达式匹配tpl属性,比如:public\s+(\w+)\s+tpl\s+\{ get; set; \}
  3. 提取匹配到的内容,手动编写接口(比如ITplContainer),再给每个类添加接口继承声明。

从根源解决(修改XSD)

既然代码是从XSD生成的,直接修改XSD更彻底:
在XSD中定义一个包含tpl属性的基类型,让那7个目标类型继承这个基类型,重新生成代码后,所有类会自动拥有共同的基类,遍历数组时直接转成基类型就能访问tpl,不用额外加接口。

最终使用示例

生成接口后,遍历数组时就不用switch和强制转换了:

public interface ITplContainer
{
    string Tpl { get; set; } // 根据实际属性类型调整
}

// 给每个类添加接口实现,比如:
public class DT2 : ITplContainer { /* 原有代码 + Tpl属性 */ }

// 遍历逻辑
foreach (var item in Items)
{
    if (item is ITplContainer container)
    {
        string tplValue = container.Tpl;
        // 你的业务处理
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 02:45:34