private static object GetValueFromPath(object data, string path, out bool partialMatch)
{
partialMatch = false;
var value = ValueGetter.GetValue(data, path);
if (value != null && !ReferenceEquals(value, ValueGetter.NoValue))
{
return value;
}
var names = path.Split('.');
if (names.Length > 1)
{
for (int i = 0; i < names.Length; i++ )
{
data = ValueGetter.GetValue(data, names[i]);
if (data == null || ReferenceEquals(data, ValueGetter.NoValue))
{
if (i > 0)
{
partialMatch = true;
}
break;
}
}
return data;
}
return value;
}