public static bool CheckPropertyString(object o, string testString, out string status_str) { status_str = null; if (o == null) { return(false); } if (testString == null || testString.Length < 1) { status_str = "Null property test string"; return(false); } string[] strArrays = PropertyTest.ParseString(testString, 2, "&|"); if ((int)strArrays.Length < 2) { return(PropertyTest.CheckSingleProperty(o, testString, out status_str)); } bool flag = PropertyTest.CheckSingleProperty(o, strArrays[0], out status_str); bool flag1 = PropertyTest.CheckPropertyString(o, strArrays[1], out status_str); int num = testString.IndexOf("&"); int num1 = testString.IndexOf("|"); if (num > 0 && num1 <= 0 || num > 0 && num < num1) { if (flag) { return(flag1); } return(false); } if ((num1 <= 0 || num > 0) && (num1 <= 0 || num1 >= num)) { return(false); } if (!flag) { return(flag1); } return(true); }