Para fines como la internacionalización, que pueda subclase los atributos clave como DisplayNameAttribute, DescriptionAttribute y CategoryAttribute, y utilizar algunas de consulta (resx, base de datos, lo que sea). Esto funciona bien y es fácil encontrar ejemplos.
Sin embargo, usted no puede acceder a los valores del objeto, simplemente porque: un atributo no se le da ese contexto!
Sin embargo, si esto es para cosas como PropertyGrid, DataGridView, etc., hay otro enfoque: use ICustomTypeDescriptor o TypeDescriptionProvider para proporcionar un descriptor personalizado, que puede especificar el DisplayName que desea. Puede capturar el objeto/propiedad de destino cuando crea la instancia del descriptor personalizado. Si solo quiere ajustar las propiedades, a veces TypeConverter puede ser más fácil de implementar que ICustomTypeDescriptor/TypeDescriptionProvider, pero finalmente ambos necesitan implementaciones personalizadas de PropertyDescriptor.
Esto es todo un trabajo; ¡asegúrese de estar satisfecho con este nivel de complejidad! Probablemente haya una opción más simple.
¿podría elaborar esta idea con algún código, por favor? –