enum 값과 속성 유형을 전달하여 enum에서 사용자 정의 속성을 얻는 방법은 무엇입니까?

다발

열거 형 값을 인수로 사용하고 메서드에서 특정 속성을 가져 오는 열거 형 확장 메서드를 만드는 온라인 예제가 많이 있습니다.

namespace MVVMProj.ProjUtilities
{
  public class EnumerationHelpers
  {
    public static string GetStatusText(this Enum value)
    {
      var type = value.GetType();

      string name = Enum.GetName(type, value);
      if (name == null) { return null; }

      var field = type.GetField(name);
      if (field == null) { return null; }

      var attr = Attribute.GetCustomAttribute(field, typeof(StatusTextAttribute)) as StatusTextAttribute;
      if (attr == null) { return null; }

      return attr.StatusText;
    }
  }
}

내가 궁금한 것은 메소드에 속성 유형을 전달하는 방법이 있으므로 각기 다른 속성에 대해 특정 메소드를 계속 작성할 필요가 없다는 것입니다.

이것은 미완성이지만, 내가 달성하려는 것에 대한 아이디어를 제공해야합니다.

namespace MVVMProj.ProjUtilities
{
  public class EnumerationHelpers
  {
    public static string GetCustomAttribute(this Enum value, Type customAttr) 
             //Or instead of passing a Type, a string of the attribute's name
    {
      var type = value.GetType();

      string name = Enum.GetName(type, value);
      if (name == null) { return null; }

      var field = type.GetField(name);
      if (field == null) { return null; }

      var attr = Attribute.GetCustomAttribute(field, ....) as ....;
      if (attr == null) { return null; }

      return attr....;
    }
  }
}

모든 데이터 유형이 될 수 있으므로 문자열을 반환 할 수 없다고 가정합니다.

일반적인 방법일까요?

어떤 조언이라도 대단히 감사하겠습니다!

편집 : 사용법 :

콤보 상자에 값을 표시 할 수 있도록 사전을 만드는 열거 형을 반복합니다. 속성이 if 문의 조건과 일치하는 경우에만 항목을 추가합니다.

한 가지 더 주목할 점은 사용자 지정 속성도 열거 형이라는 것입니다.

Aybe : '항목'은 반복시 객체 일 뿐이므로 캐스트를합니다. if 문에서 오류가 발생하지만 CaseTypeAttribute를 실제 CaseType 열거 형 값과 비교하려고합니다. 해결하려면 어떻게해야합니까?

오류 :
심각도 코드 설명 프로젝트 파일 줄 억제 상태 오류 CS0019 연산자 '=='은 'SBC.CaseTypeAttribute'및 'SBC.CaseType'유형의 피연산자에 적용 할 수 없습니다.

private Dictionary<int, string> _substancetypes;
public Dictionary<int, string> SubstanceTypes
{
  get
  {
    if (_substancetypes == null)
    {
      _substancetypes = new Dictionary<int, string>();
      foreach (var item in Enum.GetValues(typeof(SBC.SubstanceTypeCode)))
      {
        var descriptionAttribute = ((SBC.SubstanceTypeCode)item).GetAttribute<SBC.CaseTypeAttribute>();
        if (descriptionAttribute != null && 
               descriptionAttribute == SBC.CaseType.Exposures) //Error here
        {
          _substancetypes.Add((int)item, CTS_MVVM.CTS_Utilities.EnumerationHelpers.GetDescriptionFromEnumValue((SBC.SubstanceTypeCode)item));
        }
      }
    }

    return _substancetypes;
  }
}
Aybe

이 같은?

using System;
using System.ComponentModel;
using System.Reflection;

namespace ConsoleApp1
{
    internal static class Program
    {
        private static void Main(string[] args)
        {
            var descriptionAttribute = MyEnum.A.GetAttribute<DescriptionAttribute>();
        }
    }

    public static class EnumExtensions
    {
        public static T GetAttribute<T>(this Enum @enum) where T : Attribute
        {
            var type = @enum.GetType();
            var name = Enum.GetName(type, @enum);
            var field = type.GetField(name);
            var attribute = field.GetCustomAttribute<T>();
            return attribute;
        }
    }

    public enum MyEnum
    {
        [Description("A")] A,
        [Description("B")] B
    }
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

enum 사용자 정의 속성의 가능한 모든 값을 얻는 방법은 무엇입니까?

분류에서Dev

Typescript에서 두 개의 ENUM 조합으로 속성 유형을 설정하는 방법은 무엇입니까?

분류에서Dev

enum 값의 추가 속성을 얻는 방법은 무엇입니까?

분류에서Dev

JQuery를 사용하여 사용자 정의 HTML 속성의 값을 얻는 방법은 무엇입니까?

분류에서Dev

xmldocument에서 자식 노드의 속성 값을 사용하여 부모 노드의 속성 값을 얻는 방법은 무엇입니까?

분류에서Dev

리스너에서 속성 사용자 정의 유형을 식별하는 방법은 무엇입니까?

분류에서Dev

사용자 정의 htmlhelper에서 "class"의 기본 속성 값을 추가하는 방법은 무엇입니까?

분류에서Dev

Winform의 생성 방법에서 사용자 정의 속성을 사용하는 방법은 무엇입니까?

분류에서Dev

Angular-사용자 지정 지시문에서 속성 값을 사용하는 방법은 무엇입니까?

분류에서Dev

Ant에서-한 속성을 다른 속성의 값으로 사용하는 방법은 무엇입니까?

분류에서Dev

TypeScript에서 속성을 사용하여 함수의 유형을 선언하는 방법은 무엇입니까?

분류에서Dev

React에서 다른 속성 값을 사용하여 객체의 속성 값을 얻는 방법은 무엇입니까?

분류에서Dev

Java의 XML에서 부모 요소 속성과 자식 값을 얻는 방법은 무엇입니까?

분류에서Dev

자식 작업에서 하나의 속성과 출력을 얻는 방법은 무엇입니까?

분류에서Dev

javascript를 사용하여 html 특수 데이터 속성의 값을 호출하고 yii 1.1.14의 PHP 배열에 전달하는 방법은 무엇입니까?

분류에서Dev

D 언어에서 사용자 정의 속성을 사용하는 방법은 무엇입니까?

분류에서Dev

Aurelia의 사용자 지정 속성에서 i18n을 사용하는 방법은 무엇입니까?

분류에서Dev

Html Agility Pack을 사용하여 속성 값에 특정 문자열을 포함하는 모든 HTML 태그를 얻는 방법은 무엇입니까?

분류에서Dev

VB.NET을 사용하여 XML에서 속성 값을 얻는 방법은 무엇입니까?

분류에서Dev

Symfony 구성 요소를 사용하여 사용자 정의 유효성 검사기에 대한 종속성을 구성하는 방법은 무엇입니까?

분류에서Dev

plsql에서 동일한 속성 속성을 사용하여 객체 유형 속성의 값을 다른 객체 유형에 할당하는 방법은 무엇입니까?

분류에서Dev

jquery를 사용하여 이전 태그 (td) 자식 속성 값을 얻는 방법은 무엇입니까?

분류에서Dev

lodash를 사용하여 객체 속성 배열에서 값을 얻는 방법은 무엇입니까?

분류에서Dev

enum을 viewmodel 속성에 할당하는 방법은 무엇입니까?

분류에서Dev

IBAction 메서드에서 사용자 지정 셀의 속성을 변경하는 방법은 무엇입니까?

분류에서Dev

nginx 쿡북에 대한 사용자 정의 속성을 정의하는 방법은 무엇입니까?

분류에서Dev

Selenium WebDriver의 속성 파일에서 여러 줄 속성을 사용하는 방법은 무엇입니까?

분류에서Dev

HTML에서 onmouseover 속성을 사용자 정의하는 방법은 무엇입니까?

분류에서Dev

AngularJS : 임의 유형에서 속성을 얻는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    enum 사용자 정의 속성의 가능한 모든 값을 얻는 방법은 무엇입니까?

  2. 2

    Typescript에서 두 개의 ENUM 조합으로 속성 유형을 설정하는 방법은 무엇입니까?

  3. 3

    enum 값의 추가 속성을 얻는 방법은 무엇입니까?

  4. 4

    JQuery를 사용하여 사용자 정의 HTML 속성의 값을 얻는 방법은 무엇입니까?

  5. 5

    xmldocument에서 자식 노드의 속성 값을 사용하여 부모 노드의 속성 값을 얻는 방법은 무엇입니까?

  6. 6

    리스너에서 속성 사용자 정의 유형을 식별하는 방법은 무엇입니까?

  7. 7

    사용자 정의 htmlhelper에서 "class"의 기본 속성 값을 추가하는 방법은 무엇입니까?

  8. 8

    Winform의 생성 방법에서 사용자 정의 속성을 사용하는 방법은 무엇입니까?

  9. 9

    Angular-사용자 지정 지시문에서 속성 값을 사용하는 방법은 무엇입니까?

  10. 10

    Ant에서-한 속성을 다른 속성의 값으로 사용하는 방법은 무엇입니까?

  11. 11

    TypeScript에서 속성을 사용하여 함수의 유형을 선언하는 방법은 무엇입니까?

  12. 12

    React에서 다른 속성 값을 사용하여 객체의 속성 값을 얻는 방법은 무엇입니까?

  13. 13

    Java의 XML에서 부모 요소 속성과 자식 값을 얻는 방법은 무엇입니까?

  14. 14

    자식 작업에서 하나의 속성과 출력을 얻는 방법은 무엇입니까?

  15. 15

    javascript를 사용하여 html 특수 데이터 속성의 값을 호출하고 yii 1.1.14의 PHP 배열에 전달하는 방법은 무엇입니까?

  16. 16

    D 언어에서 사용자 정의 속성을 사용하는 방법은 무엇입니까?

  17. 17

    Aurelia의 사용자 지정 속성에서 i18n을 사용하는 방법은 무엇입니까?

  18. 18

    Html Agility Pack을 사용하여 속성 값에 특정 문자열을 포함하는 모든 HTML 태그를 얻는 방법은 무엇입니까?

  19. 19

    VB.NET을 사용하여 XML에서 속성 값을 얻는 방법은 무엇입니까?

  20. 20

    Symfony 구성 요소를 사용하여 사용자 정의 유효성 검사기에 대한 종속성을 구성하는 방법은 무엇입니까?

  21. 21

    plsql에서 동일한 속성 속성을 사용하여 객체 유형 속성의 값을 다른 객체 유형에 할당하는 방법은 무엇입니까?

  22. 22

    jquery를 사용하여 이전 태그 (td) 자식 속성 값을 얻는 방법은 무엇입니까?

  23. 23

    lodash를 사용하여 객체 속성 배열에서 값을 얻는 방법은 무엇입니까?

  24. 24

    enum을 viewmodel 속성에 할당하는 방법은 무엇입니까?

  25. 25

    IBAction 메서드에서 사용자 지정 셀의 속성을 변경하는 방법은 무엇입니까?

  26. 26

    nginx 쿡북에 대한 사용자 정의 속성을 정의하는 방법은 무엇입니까?

  27. 27

    Selenium WebDriver의 속성 파일에서 여러 줄 속성을 사용하는 방법은 무엇입니까?

  28. 28

    HTML에서 onmouseover 속성을 사용자 정의하는 방법은 무엇입니까?

  29. 29

    AngularJS : 임의 유형에서 속성을 얻는 방법은 무엇입니까?

뜨겁다태그

보관