considere el siguiente código:C#: ¿Por qué no se resuelve esta referencia de enumeración ambigua utilizando la firma del método?
namespace ConsoleApplication
{
using NamespaceOne;
using NamespaceTwo;
class Program
{
static void Main(string[] args)
{
// Compilation error. MyEnum is an ambiguous reference
MethodNamespace.MethodClass.Frobble(MyEnum.foo);
}
}
}
namespace MethodNamespace
{
public static class MethodClass
{
public static void Frobble(NamespaceOne.MyEnum val)
{
System.Console.WriteLine("Frobbled a " + val.ToString());
}
}
}
namespace NamespaceOne
{
public enum MyEnum
{
foo, bar, bat, baz
}
}
namespace NamespaceTwo
{
public enum MyEnum
{
foo, bar, bat, baz
}
}
El compilador se queja de que MyEnum es una referencia ambigua en la llamada a Frobble(). Dado que no existe ambigüedad en el método que se está llamando, se puede esperar que el compilador resuelva la referencia de tipo en función de la firma del método. ¿Por qué no?
Tenga en cuenta que no estoy diciendo que el compilador debería hacer esto. Estoy seguro de que hay una muy buena razón para que no sea así. Simplemente me gustaría saber cuál es esa razón.
Probablemente quiere que el cliente esté seguro de que está usando la enumeración correcta del espacio de nombres correcto. – BoltClock
pones todo este código en el mismo archivo? o tienes un archivo para cada espacio de nombres? –
@Juan Ayala: No importa; Estoy seguro de que el compilador solo tiene problemas con 'using's en el espacio de nombres' ConsoleApplication'. – BoltClock