Как передать в функцию 1 объект вместо нескольких его свойств? c#
Всем привет. У меня есть вот такая строка кода:
await space.Insert(TarantoolTuple.Create(model.Id, model.Login, model.Balance));
Туда нужно передать необходимые параметры для вставки в базу через ",".
Все эти параметры, это свойства объекта model.
Однако если я передаю туда сам объект, то действие не выполняется.
public async Task<UserModel> Insert(UserModel model)
{
model.Id = Guid.NewGuid().ToString();
await space.Insert(TarantoolTuple.Create(model));
return model;
}
Как можно решить эту проблему?
Эта функция позже будет обобщённой, и не хочется для каждого экземпляра прописывать все свойства только для этой функции.
Ответы (2 шт):
Если это твой метод, то сделай так чтобы он принимал обьект класса UserModel:
TarantoolTuple.Create(UserModel model);
Если это не твой метод и у этого метода нет перегрузки которая принимает класс UserModel, то никак. Потому-что этот метод принимает параметры:
TarantoolTuple.Create(string id, string login, string balance);
И уже дальше с ними манипулирует.
Метод TarantoolTuple.Create принимает отдельные значения и на их основе создаёт экземляр класса TarantoolTuple.
Можно создать метод-хелпер, который будет выполнять эту работу:
TarantoolTuple<string, string, decimal> CreateTuple(UserModel model)
{
return TarantoolTuple.Create(model.Id, model.Login, model.Balance);
}
Теперь можно его использовать так:
await space.Insert(CreateTuple(model));
Другой вариант - написать метод расширения для класса Space.
public static class Extensions
{
public static Task<DataResponse<TarantoolTuple<string, string, decimal>[]>> InsertModel(this Space space, UserModel model)
{
return space.Insert(TarantoolTuple.Create(model.Id, model.Login, model.Balance));
}
}
Код с его использованием становится ещё короче:
await space.InsertModel(model);