private PropertyValue GetOrAddNestedObject(string propertyName, out DbParameter dbParameter) { dbParameter = default(DbParameter); if (_cachedNoFindProperty.ContainsKey(propertyName)) { return(PropertyValue.NotFindProperty); } var reqParamNames = propertyName.Split('.'); var reqRootParamName = reqParamNames[0]; if (!_dbParameters.ContainsKey(reqRootParamName)) { _cachedNoFindProperty.Add(propertyName, true); return(PropertyValue.NotFindProperty); } var reqRootParam = _dbParameters[reqRootParamName]; var nestedParamName = propertyName.Substring(reqRootParamName.Length + 1); PropertyValue paramVal = GetAccessorUtil.GetValue(reqRootParam.Value, nestedParamName, IgnoreParameterCase); if (paramVal.Status != PropertyValue.GetStatus.Ok) { _cachedNoFindProperty.Add(propertyName, true); return(PropertyValue.NotFindProperty); } dbParameter = new DbParameter { Name = propertyName, Value = paramVal.Value }; _dbParameters.Add(dbParameter.Name, dbParameter); return(paramVal); }
public void GetNestedParamVal_Test() { var first = new First { Second = new Second { Third = new Third { Fourth = new Fourth { Value = "GoodJob" } } } }; var val = GetAccessorUtil.GetValue(first, "Second.Third.Fourth.Value", false); Assert.Equal("GoodJob", val.Value); }