使用しているドメインタイプごとにデータ型を作成することで、コードで間違ったドメインデータを使用しないようにするための便利なトリックを読みました。これを行うことにより、コンパイラーは誤ってタイプを混在させることを防ぎます。
たとえば、次のように定義します。
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
C#には、次のように、が使用するのと同じ構築モードを使用できる方法はありますか?
Meter distance = 5;
暗黙の変換を作成しようとしましたが、これはカスタムタイプではなく、Int32タイプの一部である必要があるようです。静的である必要があるため、Int32に拡張メソッドを追加できません。これを行う方法はありますか?