Вы не можете добавлять атрибуты к System
классам, но, если они не помечены как Sealed
, вы можете создать свой собственный класс, исходя из оригинала и добавив собственный атрибут.
Весь ваш код должен вызывать производный класс, который идентичен оригиналу, за исключением добавленного атрибута.
[MyAttribute(DisplayName="Name shown")]
public class MyActivity: System.Activities.Activity
{
}
/// <summary>
/// Custom attribute definition
/// </summary>
[AttributeUsage(AttributeTargets.Class)]
public sealed class MyAttribute : System.Attribute
{
/// <summary>
/// Defines the attribute
/// </summary>
public string DisplayName { get; set; }
/// <summary>
/// Allow access to the attribute
/// </summary>
/// <param name="prop"></param>
/// <returns></returns>
public static string GetDisplayName(System.Reflection.MemberInfo prop)
{
string field = null;
object[] attr = prop.GetCustomAttributes(false);
foreach (object a in attr)
{
MyAttribute additional = a as MyAttribute;
if (additional != null)
{
field = additional.DisplayName;
}
}
return field;
}
}