Для таких целей, как интернационализация, вы можете подкласс ключевые атрибуты, такие как DisplayNameAttribute, DescriptionAttribute и CategoryAttribute, и использовать некоторый поиск (resx, database, что угодно).Это прекрасно работает, и примеры легко найти.
Однако вы не можете получить доступ к значениям объекта, просто потому что: атрибуту не задан этот контекст!
Однако, если это относится к таким вещам, как PropertyGrid, DataGridView и т. Д., Есть другой подход: используйте либо ICustomTypeDescriptor, либо TypeDescriptionProvider, чтобы предоставить собственный дескриптор, который может указать желаемое DisplayName.Вы можете захватить целевой объект / свойство при создании экземпляра пользовательского дескриптора.Если вы хотите только настроить свойства, иногда TypeConverter может быть проще реализовать, чем ICustomTypeDescriptor / TypeDescriptionProvider, но в конечном итоге оба требуют пользовательских реализаций PropertyDescriptor.
Это все довольно трудоемкий процесс;убедитесь, что вы довольны этим уровнем сложности!Вероятно, есть более простой вариант.