【问题标题】:Create a method which return a list of parameters (const string) from a class创建一个从类返回参数列表(常量字符串)的方法
【发布时间】:2014-06-10 20:31:09
【问题描述】:

我正在开发一个包含一些 const 字符串的类

public static class Constants
{
    public const string CarID= "car_id";
    //public const string NumberID= "number_id"; // this is the second const string might be added, so 
    //the new created function can return the two

}

public class CarENParameters
{

    public string Params { get; set; }

    public CarENParameters(string carId)
    {
        Params = carId;
    }

}

public static class CarPropertyProcess
{
    //test params

    public static CarENProps Parse(Uri uri,string content)
    {

        string carID= Regex.Matches(content, @"\$\('#CarXL'\)\.val\((\d+)\)", RegexOptions.None)[0].Groups[1].Value;

        var parameters = new Dictionary<string, string>
        {
            {Constants.CarID, carID},        
        };

        return new CarENProps(uri.AbsoluteUri, parameters);
    }

    public static CarENParameters GetParameters()
    {
        return new CarENParameters(Constants.CarID);
    }
}

在常量类中,我有一个carID,现在的情况是它可能有多个常量字符串,例如:public const string NumberID= "number_id";

所以我想创建一个函数来返回这些 const 字符串的列表,它们是 car_id 和 number_id,类名为 CarENParameters,但我还没有弄清楚如何通过 get/set 在类,我应该使用字典或键值对来实现吗?我对 C# 很陌生,所以希望在你们的帮助下我能有一个更好的观点。谢谢

【问题讨论】:

    标签: c# list parameters return


    【解决方案1】:

    你在寻找这样的东西吗:

    public static List<CarENParameters> GetParameters()
    {
        return new List<CarENParameters>()
               {
                    new CarENParameters(Constants.CarID1),
                    new CarENParameters(Constants.CarID2),
                    new CarENParameters(Constants.CarID3)
               }
    }
    

    【讨论】:

      【解决方案2】:

      您可以为此使用反射

      别忘了输入using System.Reflection;

              // get class type
              Type type = typeof(Constants);
      
              // get a list of fields
              FieldInfo[] fields = type.GetFields();
      
              List<CarENParameters> list = new List<CarENParameters>();
      
              // loop on field list
              foreach (FieldInfo field in fields)
              {
                  // if field is a string add it to our return list
                  if (field.FieldType == typeof(String))
                      list.Add(new CarENParameters((String) field.GetValue(null)));
              }
      

      【讨论】:

      • 非常感谢您的示例,我已经这样做了,现在我使用另一个类来打印列表中的元素,但是,由于列表有一个 CarENParameters 对象,并且在 ApiController 上,我使用了 IEnumerable 你知道在这种情况下如何提取所有带有 yield return new 的元素吗?这是我的代码:notepad.cc/share/vlyX7OyI90
      • "无法转换类型为 'System.Collections.Generic.List1[System.Object]' to type 'System.Collections.Generic.List1[COIUS.Overlook.BookingEngine.Common.Vincci.CarENParameters]' 的对象。",
      • 您正在尝试将对象列表调用到发生此错误的 CarENParameters 列表?但是您可以在对象列表上循环并创建 Ca‌​rENParameters 列表
      • 是的,我正在尝试循环对象内的所有元素,以便在 HTTP 上以 JSON 格式显示它们,并且 yeild 返回新,当我尝试转换它时出现错误。
      • 当我尝试提取所有 IEnumerable 对象并使用 CarENParameters 进行转换时,出现错误。
      猜你喜欢
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      • 2023-03-21
      • 2013-08-11
      相关资源
      最近更新 更多