国際化などの目的で、DisplayNameAttribute、DescriptionAttribute、CategoryAttributeなどの主要な属性をサブクラス化し、ルックアップ(resx、データベースなど)を使用できます。これは正常に機能し、例を見つけるのは簡単です。
ただし、次の理由だけで、オブジェクトの値にアクセスすることはできません。属性にそのコンテキストが与えられていない!
ただし、これがPropertyGrid、DataGridViewなどの場合は、別のアプローチがあります。ICustomTypeDescriptorまたはTypeDescriptionProviderのいずれかを使用して、必要なDisplayNameを指定できるカスタム記述子を提供します。カスタム記述子のインスタンスを作成するときに、ターゲットオブジェクト/プロパティをキャプチャできます。プロパティを微調整するだけの場合は、TypeConverterの実装がICustomTypeDescriptor / TypeDescriptionProviderよりも簡単な場合がありますが、最終的には両方ともカスタムPropertyDescriptorの実装が必要になります。
これはすべてかなりの作業です。このレベルの複雑さに満足していることを確認してください。おそらくもっと簡単なオプションがあります。