私はいくつかのコード例を見る契約クラスを探しています。私はそれが何であるのだろうか。したがって、このようなサンプルコードがあります。についてC#契約クラスとインターフェイスのネストされたタイプ
[ContractClass(typeof(ICaseConverterContracts))]
public interface ICaseConverter
{
string Convert(string text);
}
[ContractClassFor(typeof(ICaseConverter))]
internal class ICaseConverterContracts : ICaseConverter
{
string ICaseConverter.Convert(string text)
{
Contract.Requires(text != null);
Contract.Ensures(Contract.Result<string>() != null);
return default(string);
}
private ICaseConverterContracts() {}
}
public class InvariantUpperCaseFormatter : ICaseConverter
{
public string Convert(string text)
{
return text.ToUpperInvariant();
}
}
ここでは契約は何ですか?
私はInvariantUpperCaseFormatterの新しいインスタンスを作成しました。
class Program
{
static void Main(string[] args)
{
InvariantUpperCaseFormatter formatter = new InvariantUpperCaseFormatter();
Console.Write(formatter.Convert(string.Empty));
}
}
と私はICaseConverterContracts
クラスのメソッドICaseConverter.Convert(string text)
にブレークポイントを置くが、それは壊れません。それは何ですか? nameがnullでないかどうかを自動的に確認しますか?