2012-08-29 3 views
0

C#의 EnumBuilder를 사용하여 데이터베이스의 테이블을 기반으로 열거 형을 만들었습니다. 그러나 프레임 워크가 설계 될 때 우리가 가지고있는 열거 형은 대개 데이터베이스의 ID와 연관된 이름 인 속성을 포함합니다.C# EnumBuilder를 사용하여 특성이있는 열거 형을 만듭니다.

DB 테이블을 수동으로 업데이트 할 필요없이 최신 열거 형을 유지하고 현재는 특성을 가진 기능을 잃지 않습니다 (거의 사용하지는 않지만). .

따라서 속성을 포함하는 열거 형을 빌드 할 수 있습니까? 내가 열거를 작성한 기존 코드에 다음을 추가하여 속성을 추가 할 수 있었다 SetCustomAttribute를 사용

public enum Example 
{ 
    [StringValue("Some Name 1")] 
    SomeName1 = 1,  
    [StringValue("Some Name 2")] 
    SomeName2 = 2, 
} 

업데이트

.

Type myType = typeof(StringValueAttribute); 
ConstructorInfo ci = myType.GetConstructor(new Type[] { typeof(string) }); 
// Other code 
FieldBuilder fb = eb.DefineLiteral(name, result.ExampleID); 
var cab = new CustomAttributeBuilder(ci, new object[] { result.Name }); 
fb.SetCustomAttribute(cab); 

답변

3

나는 EnumBuilder 자신을 사용하지 않은,하지만 DefineLiteral 방법은 결국 당신이 필드의 속성을 정의하는 데 사용할 수있는 의심 SetCustomAttribute을 노출하는 FieldBuilder 반환합니다.

+0

그래서 이전에 시도했지만 오류가 있다는 것을 알고 있습니다. 그래서, 그것을 재현하려고했지만, 대신 그것을 얻는 결국. : S .. 내 업데이트에서 작동하도록 만든 추가 코드를 추가했습니다. –

+3

@mrfish : 미래에는 질문을 할 때 이미 시도한 것과 잘못된 것을 포함하십시오. –

+0

주목, 도움에 감사드립니다! –