【问题标题】:Use Enum values as Properties in使用枚举值作为属性
【发布时间】:2015-07-22 13:02:34
【问题描述】:

我在下面有一个枚举:

private enum MovieData { Name, Type, Size, Description, ReleaseDate };

现在我想使用枚举的值作为属性名称

public string MovieData.Name
    {
        get
        {
            return name;
        }
        set
        {
            name = value;                                
        }
    }

其他人也一样,名字是一个属性。所有的返回类型都应该是字符串,我想用 Name 而不是 MovieData.Name 访问属性

我该怎么做?

【问题讨论】:

  • 问题是:你为什么要这样做?你能多写一些吗?
  • 我不确定我是否遵循,public string MovieData.Name 不是有效的 C#。你能举一个更广泛的例子来说明你的意思吗?你将如何使用它等等。
  • 听起来你根本不想要枚举,但 MovieData 应该是具有 public string Name {get; set;} 等属性的 class
  • @UmairJameel 你可以拥有一个enum type 的属性。 public enum MovieCat { Horror, Romance, Comedy } -> public MovieCat Category {get;set;}
  • @UmairJameel 我认为您需要与您的导师交谈并明确他们的意思,因为您不了解enum 在 C# 中的工作原理。 enum 用于制作一种命名的值范围,如我上面的示例所示。你可以得到一个字符串值,但有用的是按原样使用enums。

标签: c# wpf enums


【解决方案1】:

我不确定你的问题是什么,但正如@crashmstr 评论的那样......看来你不需要Enum 但你只需要一个类来保存这些属性

您可以使用任何方式但这不是一个好的做法 我不知道你想让setter做什么

public string Name
        {
            get
            {
                return MovieData.Name.ToString();
            }
        }

        public string Type
        {
            get
            {
                return MovieData.Type.ToString();
            }
        }

        public string Size
        {
            get
            {
                return MovieData.Size.ToString();
            }
        }

        public string Description
        {
            get
            {
                return MovieData.Description.ToString();
            }
        }

        public string ReleaseDate
        {
            get
            {
                return MovieData.ReleaseDate.ToString();
            }
        }

【讨论】:

    【解决方案2】:

    您想要string 还是enum 回来?

    private class SomeClass
    {
        private MovieData _data;
    
        public MovieData Data { get { return _data; } set { _data = value; } }
        public string DataString 
        { 
            get { return _data.ToString(); }
            set {
                switch (value){
                    case "Name":
                        _data = MovieData.Name;
                        break;
                    case "Type":
                        _data = MovieData.Type;
                        break;
                    // etc.
                }
            }
        }
    }
    

    但我仍然不清楚你在问什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-24
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 1970-01-01
      • 2015-05-21
      • 1970-01-01
      相关资源
      最近更新 更多