在 XML 文档中,如何引用同一命名空间中具有相同名称的另一个 class?

In XML documenttion, how do I reference another class that has the same name in the same namespace?

我有几个彼此密切相关的 C# 包。其中每一个都有自己的 IServiceCollectionsExtensions 静态 class 生活在 Microsoft.Extensions.DependencyInjection 命名空间中。我想做的是在其中一个方法的 XML 注释中,引用另一个程序集中另一个 class 中的方法。示例:

// assembly Foo
namespace Microsoft.Extensions.DependencyInjection
{
    public static class IServiceCollectionExtensions
    {
        /// <summary>This is some info</summary>
        public static IServiceCollection AddFoo(this IServiceCollection services)
        {
            // register some types in the DI container
            return services;
        }
    }
}

// assembly Foo.Bar, which has a dependency on Foo
namespace Microsoft.Extensions.DependencyInjection
{
    public static class IServiceCollectionExtensions
    {
        /// <summary>
        /// You don't need to call <see cref="IServiceCollectionsExtensions.AddFoo(IServiceCollection)" /> -- we'll do it for you
        /// </summary>
        public static IServiceCollection AddFooBar(this IServiceCollection services)
        {
            services.AddFoo();
            // register some other types in the DI container
            return services;
        }
    }
}

问题出在 Foo.Bar 项目中,Visual Studio 抱怨“XML 具有无法解析的 cref 属性 'AddFoo(IServiceCollection)'” (CS1574)。

请注意,这是一个人为的例子。我完全知道在大多数情况下您可以多次注册相同的服务。

我怎样才能做到这一点?提前致谢。

最好的答案可能是“不要那样做”,只需将您的扩展方法命名为 class 不同的名称即可。如果它们毕竟是扩展方法,class 的名称通常并不重要。 (在“Microsoft”命名空间内定义内容在这里也有点令人困惑,因为好吧,我猜你不会在 Microsoft 程序集中发布它!)

如果您真的想这样做,在 cref 中您可以以 T: 开头来显式引用类型或以 M: 开头来显式引用方法,但此时您选择退出所有验证或 IDE 功能,因为那是后门。