Я прочитал полезный трюк о том, как вы можете избежать использования неверных данных домена в своем коде, создав тип данных для каждого типа домена, который вы используете. Делая это, компилятор предотвратит случайное смешивание ваших типов.
Например, определяя следующие:
public struct Meter
{
public int Value;
public Meter(int value)
{
this.Value = value;
}
}
public struct Second
{
public int Value;
public Second(int value)
{
this.Value = value;
}
}
позволяет мне не смешивать счетчики и секунды, потому что это отдельные типы данных. Это здорово, и я вижу, насколько он полезен. Я знаю, что вам все равно нужно определить перегрузки операторов для обработки любой арифметики с этими типами, но я оставляю это для простоты.
Проблема с этим подходом заключается в том, что для использования этих типов мне нужно каждый раз использовать полный конструктор, например:
Meter distance = new Meter(5);
Есть ли какой-либо способ в С#, я могу использовать тот же режим построения, который использует System.Int32
, например:
Meter distance = 5;
Я попытался создать неявное преобразование, но похоже, что это должно быть частью типа Int32, а не мои пользовательские типы. Я не могу добавить метод расширения к Int32, потому что он должен быть статичным, поэтому есть ли способ сделать это?