Как создать "публичный массив строк" из параметра в виде массива? - PullRequest
0 голосов
/ 13 июня 2018

У меня есть этот код:

public static void SendDataToES(String startTimestamp, String startDate, String bid_x, String ask_x)
{
    var tem_ehm = new Pre_Market
    {
        timestamp = startTimestamp,
        date = startDate,
        bid = bid_x,
        ask = ask_x
    };
}

class Pre_Market
{
    public string x_ric { get; set; }
    public string ask { get; set; }
    public string bid { get; set; }
    public string date { get; set; }
    public string timestamp { get; set; }
}

.

Но в будущем он будет иметь параметры в виде массива.

public static void SendDataToES (String startTimestamp,String startDate, String bid_x, String ask_x, IList nameABC, String [] getABCs )

, для которого nameABC [] имеет значение A, B, C, а getABC [] имеет значение 1,2,3, поэтому я хотел бы создать в классе Pre_Market как Array

public string[] A { get; set;}
public string[] B { get; set;}
public string[] C { get; set;}

Не уверен, что ниже работает нормально?

for ( int i = 0 ; i < nameABC.Count(); i++ )
{
  public string[] nameABC[i] { get; set; }
}

, так что ниже доступно?

var tem_ehm = new Pre_Market
{
    timestamp = startTimestamp,
    date = startDate,
    bid = bid_x,
    ask = ask_x,
    A = getABC[0],
    B = getABC[1],
    C = getABC[2]
};

Обновлено!Ниже работает нормально на моей стороне.

var temp_ehm = new Pre_Market
{
    timestamp = startTimestamp,
    date = startDate,
    fids = new Dictionary<string, string>(),
};

for (int i = 0; i < nameFIDs.Count() - 1; i++)
{
    temp_ehm.fids.Add(nameFIDs[i], get_FIDs[i]);
}

"можно добавить фид в temp_ehm", это для меня новость!

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Простым решением будет использование словаря.

public static void SendDataToES(String startTimestamp, String startDate, String bid_x, String ask_x, IList<string> nameABC, string[] getABCs)
{
    var tem_ehm = new Pre_Market
    {
        timestamp = startTimestamp,
        date = startDate,
        bid = bid_x,
        ask = ask_x,
        ABCs = new Dictionary<string, string>()
    };
    int i = 0;
    foreach (string name in nameABCs)
        tem_ehm.Add(name, getABCs[i++];

    // access the ABCs like so:
    string A = tem_ehm.ABCs["A"];
    string B = tem_ehm.ABCs["B"];
    string C = tem_ehm.ABCs["C"];
}

class Pre_Market
{
    public string x_ric { get; set; }
    public string ask { get; set; }
    public string bid { get; set; }
    public string date { get; set; }
    public string timestamp { get; set; }
    public Dictionary<string, string> ABCs { get; set; }
}
0 голосов
/ 13 июня 2018

Если вы согласны с использованием анонимного класса вместо Pre_Market, тогда вы можете создать структуру вашего объекта в JSON (сборка строки очень проста), а затем использовать десериализатор JSON (install NewtonSoft.JSON via NuGet) для его преобразованияк объекту

Здесь вы можете сгенерировать строку JSON

string jsonStr = "{ timestamp = \"" + startTimestamp + "\"," +
    "date = \"" + startDate + "\"," +
    "bid = \"" + bid_x + "\"," +
    "ask = \"" + ask_x + "\"";

for ( int i = 0 ; i < nameABC.Count(); i++ )
{
  jsonStr  += "," + nameABC[i] + " = \"" + getABCs[i] + "\""
}

jsonStr += "}";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...