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

如何在另一个项目中复用C#的type alias(类型别名)

跨项目复用接口所在项目中定义的类型别名(Type Alias)

问题场景

我有一个包含若干接口的项目,接口中定义了类型别名,示例代码如下:

namespace UsingTest
{
    using MyType = System.Collections.Generic.List<int>;

    public interface IUsingTest
    {
        MyType GetList();
    }
}

现在想在另一个项目中直接使用MyType实现接口,无需重新定义别名,目标代码如下:

namespace UsingTest
{
    public class UsingClass : IUsingTest
    {
        public MyType GetList()
        {
            throw new NotImplementedException();
        }
    }
}

注意:同一项目中只需把MyType声明为global using即可,但这个方法在多项目场景下不生效。

解决方案

为什么global using跨项目无效

global using是项目级别的编译语法糖,作用域仅限当前项目,不会将别名信息写入程序集元数据,所以其他项目无法识别这个别名。

可行的解决方法

  • 方法1:共享别名定义文件(推荐)
    在接口项目中创建一个单独的文件(比如TypeAliases.cs),把类型别名定义放在里面:

    namespace UsingTest
    {
        using MyType = System.Collections.Generic.List<int>;
    }
    

    然后在另一个项目中:

    1. 右键项目 → 添加 → 现有项
    2. 找到接口项目中的TypeAliases.cs文件
    3. 点击「添加」按钮旁的下拉箭头,选择添加为链接

    这样两个项目会共享同一个别名定义文件,无需重复编写,就能在另一个项目中直接使用MyType。

  • 方法2:用派生类替代类型别名
    如果不想用链接文件,可以在接口项目中定义一个继承自目标类型的公共类:

    namespace UsingTest
    {
        public class MyType : System.Collections.Generic.List<int> { }
    }
    

    之后在另一个项目引用该项目后,就能直接使用MyType。不过这种方式会创建一个新的类型,在做类型判断(比如is、GetType())时要注意区别,但作为接口的返回/参数类型完全可以正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 14:05:24