I had a problem with this error for several hours, and I cannot understand why this is happening. Consider the following code:
using System; using System.Diagnostics.Contracts; using System.Linq.Expressions; namespace Contracts { class Data { public object TestData1 { get; set; } public object TestData2 { get; set; } } class Program { static void Main() { Data d = new Data(); Method(d); } static void Method(Data d) { Contract.Requires(Methods.TestMethod1("test")); Contract.Requires(Methods.TestMethod2("test1", "test2")); Contract.Requires(Methods.TestMethod3(d, x => x.TestData1)); Contract.Requires(Methods.TestMethod4(d, x => x.TestData1, x => x.TestData2)); } } static class Methods { [Pure] public static bool TestMethod1(string str) { return true; } [Pure] public static bool TestMethod2(params string[] strs) { return true; } [Pure] public static bool TestMethod3<T>(T obj, Expression<Func<T, object>> exp) { return true; } [Pure] public static bool TestMethod4<T>(T obj, params Expression<Func<T, object>>[] exps) { return true; } } }
When I compile the project, the line "Contract.Requires (Methods.TestMethod4 (d, x => x.TestData1, x => x.TestData2)); causes the following compilation error:
Broken contract. Found Requirement after appointment in the method "Contract. Program. Method (Contracts.Data)".
How did it happen "Contract.Requires (Methods.TestMethod2 (" test1 "," test2 ")); does not cause an error, but" Contract.Requires (Methods.TestMethod4 (d, x => x.TestData1, x => x.TestData2 )); "does?
Please, help!: (
Marco source share