数日前に私はHow to constraint a generic to be of type enum?という質問をしました。私は、コードの契約に導入され、私は私が望むすべてが(T
がすべきことをコンパイル時に通知されるようにされ、問題のための警告コンパイル時間を作り出すことができるとされたジェネリックをenum型にするためのコードコントラクトの使用
class MyClass<T> where T : enum // Not possible in C#
{
}
:問題を要約すると次のコードでありますenum
とする)。私は次のコード(Full source)を試しました。
class MyClass<T>
{
public MyClass()
{
Contract.Requires(typeof(System.Enum).IsAssignableFrom(typeof(T)));
}
}
これは、役に立たない実行時エラーを生成するだけです。私はコンパイル時の警告を生成することができますが、私はそれを動作させることはできません。誰かが私が間違っていることを教えてもらえますか?ここで
は、プロジェクトのコード契約の設定の画像です:
あなたはその質問に対する回答として提案されているライブラリを使用しましたか? – Oded
@Oded、私は試しましたが、サンプルコードがないので、どこから始めるべきか分からなくなっています。これは別の質問ですが、私はこれを.NETフレームワークの一部として使っているので、これをより良い方法で実行できます。 – atoMerz
@AtoMerZ:Unconstrained Melodyはライブラリとして使用するように設計されていますが、自分のコードに同じIL再書き込みを使用することができます。ちょうどコードを見てください - それはかなり簡単です。 –