Resolución de alcance por defecto de C #
-
05-07-2019 - |
Pregunta
He heredado un 'Botón' de la clase c # (que no puedo cambiar) que choca con la clase BCL 'Windows.Forms.Button'. Normalmente, estaré muy feliz de ir:
MyPackage.MyClass.Button;
Pero hay un gran número o referencias a esta clase que es un dolor tener que volver a escribir.
¿Hay alguna forma de hacer que el compilador (enlazador?) no utilice la versión personalizada de Button sobre la versión BCL?
Solución
Agregue esto a la parte superior del archivo:
using MyButton = MyPackage.MyClass.Button;
Ahora puede hacer referencia a su botón personalizado con un nombre distinto. Es posible que deba hacer algo similar para el botón de existencias si lo utiliza en cualquier lugar del mismo archivo.
Otros consejos
si quiere usarlo por defecto, reemplace
using Windows.Forms;
con
using MyPackage.MyClass;
Si lo haces, deberás calificar completamente todos los botones de Windows.Forms.
O, si lo desea, puede asignar un alias al espacio de nombres
using My = MyPackage.MyClass;
//... then
My.Button b = ...
O alias el botón
using MyButton = MyPackage.MyClass.Button;
Puede eliminar utilizando Windows.Forms;
de la parte superior del código. Eso significaría, por supuesto, que tendría que hacer referencia a todos los elementos de Windows.Forms específicamente.
Parece que puedo hacer lo siguiente:
using Button = MyPackage.MyClass.Button;
funciona y conserva todas las referencias dentro del código a Button. Aunque estoy tentado de no seguir esta ruta, ya que sigue siendo ambiguo (al menos para el lector), qué botón se está utilizando.
Al menos puede hacer que sea un poco menos doloroso / wordy con " usando " ;:
using MPMC = MyPackage.MyClass;
entonces puedes decir:
MPMC.Button