Con .NET 4.5, el equipo de CLR ha añadido:¿Por qué no hay CallerTypeNameAttribute en .NET 4.5?
Por qué no fue un añadido para el tipo de la persona que llama?
Con .NET 4.5, el equipo de CLR ha añadido:¿Por qué no hay CallerTypeNameAttribute en .NET 4.5?
Por qué no fue un añadido para el tipo de la persona que llama?
Esto es difícil de responder para alguien externo al equipo de diseño, pero diría que no hay un caso de uso fuerte para CallerTypeNameAttribute
.
Los atributos de archivo y línea le proporcionan información ampliada para las rutinas de registro que de otro modo serían imposibles de obtener. El nombre de miembro permite el inicio de sesión y simplifica la implementación de INotifyPropertyChanged
al mismo tiempo que permite la refactorización de nombres segura sin la necesidad de buscar cadenas.
El tipo de llamante ya se puede pasar a un método determinado usando typeof(CurrentType).Name
por lo que probablemente no merezca un atributo adicional. Podría decirse que el nombre del miembro llamante también podría obtenerse usando MethodBase.GetCurrentMethod
, pero eso probablemente siempre fuerce la reflexión y probablemente el typeof
esté optimizado para que obtenga el beneficio de una refactorización segura y un menor impacto en el rendimiento.
El único inconveniente de usar typeof
en lugar del posible atributo sería que el enfoque de los atributos no se vería afectado por la ofuscación.
¿El nombre del miembro contiene el nombre del tipo como prefijo? – CodesInChaos
@CodesInChaos no parece. –
La respuesta estándar para "¿Por qué X no tiene Y?" es "¿Por qué debería X tener Y?" Se consideraron casos de uso real para los tres atributos que lista. Tengo curiosidad, ¿cuál es tu caso de uso para el tipo de la persona que llama? – hvd