C# 重写的扩展方法需要程序集引用

C# 重写的扩展方法需要程序集引用,c#,.net,generics,.net-4.5,extension-methods,C#,.net,Generics,.net 4.5,Extension Methods,这似乎很奇怪,除非我错过了什么 public static string ToDomainSolarSystemCelestial(this TypeMapper<string> m) { // Does not reference any other assemblies - straight string to string mapping. return m.Source } public static Universe.SolarSystemCelestia

这似乎很奇怪,除非我错过了什么

public static string ToDomainSolarSystemCelestial(this TypeMapper<string> m)
{
    // Does not reference any other assemblies - straight string to string mapping.
    return m.Source
}

public static Universe.SolarSystemCelestial ToDomainSolarSystemCelestial(this TypeMapper<Db.SolarSystemCelestial> m)
{
     // Maps between a database and business object. 
     // Requires a reference to the Db assembly.
     return new Universe.SolarSystemCelestial()
     {
         Id = m.Source.Id,
         // etc
     }
}
。。使用没有依赖项的重载,Visual Studio将发出以下消息:

未在引用的程序集中定义Db.solarSystemSocial类型。必须添加对1.0.0.0版程序集数据库的引用…

如果我更改其中一个方法的名称,问题就会消失。除了更改名称外,还有其他解决方法吗?理想情况下,我希望覆盖具有相同的名称,但处理不同的类型

谢谢


注意:关于查找未引用的程序集,存在一些问题,但在本例中,我询问的是扩展方法的编译,而不仅仅是缺少的程序集引用。

Universe.solarSystemAscessional的基类是什么

这与返回类型在不同的程序集中,或者它的一个基类型,或者它公开的类型在另一个程序集中有关

编辑:

在再次阅读带有额外注释的问题后,问题如@dbugger所述


一种解决方法是在不同的名称空间中使用扩展方法,并且在调用代码时只添加所需的名称空间。因此编译器只看到一个。

编译器需要确定要使用哪个重载,因此它需要引用任何重载签名中使用的任何类型。更改方法的名称不会解决此问题。错误与缺少引用有关。如果需要进行代码编译,则必须向引用的外部程序集添加引用。@Dbugger-我认为这听起来是正确的,而且是有意义的。@Dbugger您的注释应该是可接受的答案。Universe.solarSystemScientive中只有框架类型。
var x = Mapper.Map("x").ToDomainSolarSystemCelestial();