2011-09-30 7 views
1

System.Activites.Presentation 사용자 지정 특성의 클래스를 추가하고 싶습니다. 나는 emit(TypeBuilder, ModuleBuilder, AssemblyBuilder)으로 해보려고했습니다. 속성을 추가하여 기존 유형을 변경할 수 있습니까? 아니면 기존 데이터 형식을 사용하도록 TypeBuilder을 어떻게 말합니까? 또는 주어진 유형을 상속합니까? 감사합니다.시스템 클래스에 사용자 지정 특성 추가

+0

어떤 수업에 대해 이야기하고 있습니까? 그들은 '봉인 된'것으로 표시되어 있습니까? 그렇지 않은 경우 원본에서 파생 된 사용자 지정 클래스를 만들고 네임 스페이스 Windows.System.Activities에서 사용자 지정 특성 –

+0

클래스를 추가 할 수 있습니다. 내 사용자 지정 특성 DisplayName (문자열)을 추가하고 싶습니다. – ShurikEv

답변

2

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; 
    } 


} 
관련 문제