7

¿Hay alguna forma de desactivar el uso de la palabra clave "dinámica" en .net 4?C# - Desactivar palabras clave dinámicas

Pensé que la característica de Análisis de Código de VS2010 podría tener una regla para fallar la compilación si se usa la palabra clave dinámica, pero no pude corregirla.

+7

¿Por qué? No hay nada malo sobre la dinámica. –

+11

¿Está tratando de hacer cumplir esto como una regla entre un equipo de desarrolladores? En ese caso, sugiero dos herramientas: grep y un bate de cricket. –

+0

Cricket bat? Vamos, las herramientas de ganado son mucho más efectivas. http://www.enasco.com/product/C13638N –

Respuesta

5

Es parte del lenguaje C# 4.0, por lo que no realmente.

Puedes usar FXCop para buscarlo y fallar la compilación si lo encuentra.

Estilo policía podría funcionar en su lugar:

http://code.msdn.microsoft.com/sourceanalysis

Aquí hay un enlace hablando del mismo tema y cómo poli estilo podría ser la respuesta. También hay una publicación sobre cómo conseguir que FX cop busque potencialmente la palabra clave dinámica, aunque no es perfecta.

http://social.msdn.microsoft.com/Forums/en/vstscode/thread/8ce407ba-bdf7-422b-bbcd-ca4701c3a76f

+0

Voy a intentar esto. – chief7

+0

resulta que FxCop puede encontrar campos de nivel de clase dinámicos, parámetros de método y retornos de método a través de DynamicAttribute, pero no puede encontrar variables locales dentro de los métodos b/c que se convierten en objetos sin ningún atributo. – chief7

+0

@ cheif7 Hice un poco más de aspecto y policía de estilo podría ser el camino a seguir. Publiqué un enlace a algunas publicaciones sobre el mismo problema. – kemiller2002

2

destino .NET 1.0? :-)

O haga revisiones del código.

(O, para ser menos gracioso, que debe ser bastante fácil escribir un FxCop o CA regla personalizada para no permitir el uso de la dinámica)

¿No te mataría por un C++ macro en este momento? :-)

+0

#define objeto dinámico –

2

La palabra clave dinámica no es mala, pero podría ser su uso.

Esto lleva a errores de código que solo puede encontrar durante el tiempo de ejecución. Esto debe evitarse a toda costa. Los errores de tiempo de ejecución son malos. Los errores de tiempo de compilación son buenos.

Puede usar algo como lo siguiente para establecer sus propios estándares. http://joel.fjorden.se/static.php?page=CodeStyleEnforcer

+2

La reflexión también lo hace. Sin embargo, nadie prohíbe la reflexión, simplemente entiende que es una herramienta muy específica para un trabajo muy específico, y en ocasiones el golpe de perforación y la falta de errores de tiempo de compilación valen la pena, porque literalmente no hay otra manera de hacer ciertas cosas. Tipo de cosas. Ídem con dinámica Usarlo en todas partes de forma predeterminada es estúpido, pero al mismo tiempo, hay ciertos tipos de cosas en las que el intercambio vale la pena. –

+0

Leer archivos del disco que podrían no ser válidos, o asumir que existen archivos de registro o configuración, etc., también "solo se encuentra en tiempo de ejecución". :-) –

2

eliminar la referencia a Microsoft.CSharp.dll, y creo que tal vez todos los usos de dynamic fallarán para compilar.

1

No estoy seguro de entender para qué es este miedo irracional a la palabra clave dinámica. Hubo este tipo de histeria sobre las variables anónimas y la palabra clave var para .NET 3.5, excepto que era simplemente idiota ya que esos son tipos legítimos definidos estáticamente.

La palabra clave dinámica tiene un propósito altamente especializado, no veo por qué una persona desea usarla sin entender por qué. Sin embargo, detener esto podría resolverse con una reunión del equipo explicando algunas de las nuevas características de .NET 4, incluida la palabra clave dinámica. Supongo que eres un superior o el líder principal del equipo; debería ser bastante fácil decirle a su equipo si alguna vez sienten que NECESITAN usar la palabra clave dinámica para venir a VERLO PRIMERO.

Estas fueron exactamente las instrucciones que di a mi equipo, ya que es poco probable que alguna vez utilicemos la palabra clave dinámica porque no escribimos actividad de interoperabilidad COM. Además, pospondré cualquier tipo de proxy dinámico a una biblioteca establecida como Linfu o Castle y dejo la implementación de proxies dinámicos para usar o no la palabra clave dinámica.

+0

Creo que la dinámica se puede usar para más de com interop .... – Amir