おそらく、C# や .NET フレームワークのよく使用される機能について無知であることを示しているのかもしれませんが、EmailAddress
どのエイリアスのような型エイリアスを作成するためにネイティブにサポートされている方法があるかどうかを知りたいのですが、string
それを拡張することができますのような私自身の方法bool Validate()
?
私はusing x = Some.Type;
エイリアスを知っていますが、これらはグローバルではなく、型の安全性も提供しません。つまりstring
、現在のファイルでエイリアスを使用するために通常のエイリアスを交換できます。私はEmailAddress
自分自身のタイプであり、独立していてstring
、それが影を落としているタイプと交換できないことを望んでいます。
私の現在の解決策はpublic sealed partial EmailAddress : IEquatable<EmailAddress>, IXmlSerializable
、ボイラープレートの暗黙的な文字列変換演算子などを生成する T4 テンプレートを使用してクラスを生成することです。今のところこれで問題なく、多くの柔軟性が得られますが、心の奥底では、強力な型エイリアスを作成するのと同じくらい簡単なことを行うために、これほど大量の定型コードを生成しなければならないのはばかげているように思えます。
これはコード生成以外では不可能かもしれませんが、他の人が自分のデザインで同様のことを試みているかどうか、またあなたの経験がどうであったか興味があります. 少なくとも、これは C# の仮想的な将来のバージョンで、このようなエイリアス機能の適切なユースケースとして機能する可能性があります。ありがとう!
編集:これから私が望む本当の価値は、データのさまざまなタイプ/形式を表すプリミティブ型でタイプ セーフを取得できることです。たとえば、 anEmailAddress
と aSocialSecurityNumber
と aPhoneNumber
はすべてstring
、基になる型として使用されますが、それ自体は交換可能な型ではありません。これにより、あいまいさの少ないメソッドオーバーロードの可能性が増えるという追加の利点は言うまでもなく、はるかに読みやすく自己文書化されたコードが得られると思います。