私はこのような識別子のカスタム型を作成することを考えています:
public enum CustomerId : int { /* intentionally empty */ }
public enum OrderId : int { }
public enum ProductId : int { }
これの主な動機は、orderItemIdを予期していた関数に誤ってorderItemIdを渡すようなバグを防ぐことです。
列挙型は、典型的な.NET Webアプリケーションで使用するすべてのものとシームレスに動作するようです。
- MVCルーティングは正常に動作します
- JSONシリアル化は正常に動作します
- 私がうまくいくと思うすべてのORM
だから今、私は「なぜ私はこれをするべきではないのだろうか?これらは私が考えることができる唯一の欠点です。
- 他の開発者を混乱させる可能性があります
- 非整数の識別子がある場合、システムに不整合が生じます。
- のように、追加のキャストが必要になる場合があり
(CustomerId)42
ます。しかし、ORMおよびMVCルーティングは通常、enum型の値を直接渡すので、これが問題になるとは思いません。
だから私の質問は、何が欠けているのですか?これはおそらく悪い考えですが、なぜですか?