¿Cuándo debemos usar la palabra clave extern alias
en C#?¿Cuándo debemos usar la palabra clave extern alias en C#?
Respuesta
Básicamente solo lo necesita cuando quiere usar dos tipos con el mismo nombre completo (el mismo espacio de nombres, el mismo nombre) de diferentes ensamblajes. Usted declara un alias diferente para cada ensamblaje, por lo que puede hacer referencia a ellos a través de ese alias.
hace falta decir que usted debe tratar de evitar caer en esa situación para empezar :)
Anson Horton tiene un good blog post al respecto.
Solo para agregar, incluso después de agregar extern declaración de alias en la parte superior del archivo comsumer * .cs, el compilador de manera predeterminada no busca el tipo que estoy usando (que está presente en ese ensamblaje). El comportamiento predeterminado de Compiler siempre es buscar clases y tipos en el actual y ensambles a los que se hace referencia que tienen alias 'global'. Terminé utilizando un nombre de tipo completo que comienza con el nombre de alias externo, por ejemplo mi declaración de alias externa era 'extern alias WidgetsVendor1;' y todavía estaba escribiendo código como 'var wid = new WidgetsVendor1.Widgets.Widget();'. No puedo simplemente hacer -'var wid = new Widgets.Widget() ; ' – RBT
@RBT: No, solo * declara * el alias. Pero podría tener 'usando WidgetsVendor1.Widgets;' y escribir 'var wid = new Widget();'. –
ohh. ¡Interesante! No lo sabía. Publiqué mis comentarios sobre la base de mi observación que tuve en la mañana. Es bueno saberlo. Puedo importar los espacios de nombres dentro del alias externo usando la palabra clave 'using'. Gracias. – RBT
Está ahí para ayudarte a salir de un pozo realmente profundo excavado por el control de versiones. Supongamos que su primera versión de su programa usa esta clase
using System;
namespace Acme.Financial.Banking {
[Serializable]
public class BankAccount {
public double Balance { get; set; }
//...
}
}
Y ha estado serializando muchos registros de cuentas bancarias con ella. Y un contador comienza a quejarse sobre el balance de estar fuera por una mil millonésima parte de un centavo, por lo que cambiar la clase:
public decimal Balance { get; set; }
Problema resuelto, el próximo cliente tiene balances felices. Hasta que se le solicite que actualice un cliente existente con muchos registros serializados en el formato anterior. Gran problema, ya no se pueden deserializar los registros ya que la clase ha cambiado.
extern alias resuelve su problema, puede hacer referencia tanto a la versión anterior como a la nueva versión de la clase en su código, aunque los nombres del espacio de nombres y de clase sean los mismos.
Muy útil caso de uso para usar alias extern. – RBT
- 1. Cuándo usar extern "C"?
- 2. Cuándo usar extern "C" en C++?
- 3. Cuándo usar extern "C" en palabras simples?
- 4. ¿Cuándo se debe usar la palabra clave volátil en C#?
- 5. ¿Cuándo necesitaría usar la palabra clave stackalloc en C#?
- 6. ¿Cuándo debería usar la palabra clave "this" en C++?
- 7. ¿Es realmente necesaria la palabra clave extern?
- 8. ¿Cuándo debería usar la palabra clave "self"?
- 9. ¿Cuándo NO DE USAR esta palabra clave?
- 10. ¿Cuándo debemos usar el operador verificado en C#?
- 11. Cuándo deberíamos usar la clase y cuándo no debemos
- 12. ¿Cuándo debería usar la palabra clave "strictfp" en java?
- 13. C# Cuándo debe usar el palabra "this"
- 14. ¿Cuándo, si alguna vez, debemos usar const?
- 15. Cuándo pasar la palabra clave ref en
- 16. ¿Cuándo es necesaria la palabra clave "typename"?
- 17. Descompilación de un método implementado con la palabra clave extern
- 18. ¿Cuándo ha utilizado la palabra clave "mutable" de C++?
- 19. Java: cuándo utilizar la palabra clave 'this'
- 20. Cuándo usar SQL Table Alias
- 21. ¿Cuándo debería usar Apache Commons 'Validate.isTrue, y cuándo debo usar la palabra clave' assert '?
- 22. ¿Cuándo es necesario "extern C" en C++ en Windows?
- 23. ¿Puedo usar la palabra clave `abstracta` en la clase C++
- 24. SPL vs. Array: ¿Cuándo deberíamos usar SPL y cuándo debemos usar Array en PHP?
- 25. palabra clave extern "especificador de tipo que falta"
- 26. ¿Qué hay de malo con este programa C que utiliza la palabra clave extern?
- 27. C++ const palabra clave: ¿usar liberalmente?
- 28. ¿Cómo uso programáticamente la palabra clave "usar" en C#?
- 29. C: ¿Vale la pena la palabra clave en línea?
- 30. ¿Cuándo NO utilizar la palabra clave estática en Java?
@masoud ramezani +1 para su pregunta ... –
Aquí hay un artículo sobre este tema: http://en.csharp-online.net/ECMA-334:_16.3_External_alias_directives –