public object GetProperty(string name, object defaultReturn = null, StringComparison scompare = StringComparison.InvariantCulture, string alternate = null)
{
if (_type.Model == null) return defaultReturn;
if (name.Equals("Name", scompare)) return _type.Model.PropertyName();
if (name.Equals("Id", scompare)) return _type.Model.Id;
if (!_type.Model.PropertySet().Keys.Any(x => x.Name.Equals(name, scompare))) { return defaultReturn; }
if (alternate == null)
{
if (PropertyOverrides.ContainsKey(name) && PropertyOverrides[name].ContainsKey(""))
{
return PropertyOverrides[name][""];
}
var prop = _type.Model.PropertySet().FirstOrDefault(x => x.Key.Name.Equals(name, scompare));
return prop.Value;
}
else
{
if (PropertyOverrides.ContainsKey(name) && PropertyOverrides[name].ContainsKey(alternate))
{
return PropertyOverrides[name][alternate];
}
var ps = _type.Model.Properties.Select(x => new { Key = x.Key, Value = x.Value })
.FirstOrDefault(x => x.Key.Equals(alternate, StringComparison.InvariantCultureIgnoreCase));
if (ps == null) return defaultReturn;
object ret = ps.Value.Properties.FirstOrDefault(x => x.Key.Name.ToLower().Equals(name)).Value;
return ret;
}
}