Как обрабатывать необязательные аргументы с переменным числом аргументов в интерфейсах C#?C#

Место общения программистов C#
Ответить
Anonymous
 Как обрабатывать необязательные аргументы с переменным числом аргументов в интерфейсах C#?

Сообщение Anonymous »

Я пытаюсь написать простые преобразователи для моего проекта API ASP.NET Core. (Я знаю, что для этого существует множество библиотек, но я хочу сделать это сам и не зависеть от дополнительных зависимостей).
Я пытался обработать эти необязательные переменные аргументы, например:

Код: Выделить всё

public interface IMapper
{
public TDtoType MapEntityToDto(TDbType toBeMapped, params object[] varargs);
public TDbType MapDtoToEntity(TDtoType toBeMapped, params object[] varargs);
}
Он работает нормально, но проблема в том, что в разработчиках мне нужно постоянно анализировать переменные аргументы, например так:

Код: Выделить всё

public class PositionMapper : IMapper
{
public PositionDto MapEntityToDto(Position toBeMapped, params object[] varargs) => new()
{
StorageArea = toBeMapped.Storage.Name,
Width = toBeMapped.Width,
Height = toBeMapped.Height,
Depth = toBeMapped.Depth
};

public Position MapDtoToEntity(PositionDto toBeMapped, params object[] varargs) => new()
{
Id = varargs.Length >= 2 && varargs[1] is Guid guid ? guid : Guid.Empty,
Depth = toBeMapped.Depth,
Width = toBeMapped.Width,
Height = toBeMapped.Height,
Storage = varargs[0] as Storage
?? throw new ArgumentNullException(nameof(Storage), "Storage cannot be null"),
Carrier = varargs.Length >= 3 ? varargs[2] as Carrier : null
};
}
Мне хотелось бы иметь строго типизированный способ добавления нескольких аргументов, который мог бы обеспечить лучший интеллект и строгую типизацию. Может ли кто-нибудь помочь с этим?


Подробнее здесь: https://stackoverflow.com/questions/792 ... interfaces
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»