Какой тип у анонимного типа в с#?
Суть задачи: У меня есть данные на с#, которые я получаю в результате определенных алгоритмических вычислений. Далее мне необходимо отправить и по сети, на сервер nodejs, на JS объект имел бы такой вид:
const test = {a: 1, b: 2, c: "string"}
На C# я создал так.
new { Id = 1, b = 2, Body = "string" },
Допустим я создал такой тип.
Когда передаю его в функцию, типизирую его как object, потом обращаюсь:
Далее передаю в функцию отправки, где обращаюсь к одному из полей, на что получаю ошибку. Как описать такой объект?
Send(object a) {
a.Body;
}
И получаю:
error CS1061: 'object' does not contain a definition for 'Body' and no accessible extension method 'Body' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)
Как решить?
Ответы (2 шт):
А зачем вы используете анонимные типы? C# - строго типизированный язык, описание классов здесь норма.
public class MyMessage
{
public int Id { get; set; }
public int b { get; set; }
public string Body { get; set; }
}
public void Send(MyMessage message)
{
string body = message.Body;
}
Send(new MyMessage { Id = 1, b = 2, Body = "string" });
Собственно, как я справлялся с подобной задачей. Вы делаете условный запрос приводя его к виду List<a'>, а затем передаете вашу переменную
select new
{
abnId = _abn.Id,
abnName = _abn.Name,
contactId = _contact.Id,
contactFIO = _contact.F + " " + _contact.I + " " + _contact.O,
abnMail = _contact.Email
}).Distinct().OrderByDescending(x => x.abnId).ToList();