private string ResolveName(MappedClassMetadata mappedClass, string mappedClassPath, string name, ref System.Type type)
{
if (type == null)
return name;
// Dynamic component support
if (type == typeof(IDictionary) && mappedClass != null)
{
string fullPath = mappedClassPath + "." + name;
var dynamicProperty = mappedClass.FindDynamicComponentProperty(fullPath, _context.CaseSensitiveResolve);
if (dynamicProperty == null)
throw new QueryException(String.Format(
ErrorMessages.Resolve_CannotResolveDynamicComponentMember, name, mappedClassPath, type
));
type = dynamicProperty.Type;
return dynamicProperty.Name;
}
var resolvedName = _context.NameResolver.ResolveName(name, type, _context.CaseSensitiveResolve);
if (resolvedName != null)
{
type = resolvedName.Type;
return resolvedName.Name;
}
throw new QueryException(String.Format(
ErrorMessages.Resolve_CannotResolveName, name, type)
);
}
}