internal static object InvokeLocalCrmDatabaseStaticMultiGenericMethod(LocalCrmDatabaseInfo info, string methodName, BindingFlags bindingFlags, object[] typesOrLogicalNames, params object[] parameters)
        {
            var types = new Type[typesOrLogicalNames.Length];

            for (var i = 0; i < typesOrLogicalNames.Length; i++)
            {
                types[i] = typesOrLogicalNames[i] is string
                           ?LocalCrmDatabase.GetType(info, (string)typesOrLogicalNames[i])
                               : (Type)typesOrLogicalNames[i];
            }

            try
            {
                return(typeof(LocalCrmDatabase).GetMethods(bindingFlags | BindingFlags.Static)
                       .FirstOrDefault(m => m.Name == methodName && m.IsGenericMethod)
                       ?.MakeGenericMethod(types)
                       .Invoke(null, parameters));
            }
            catch (TargetInvocationException ex)
            {
                ThrowInnerException(ex);
                throw new Exception("Throw InnerException didn't throw exception");
            }
        }
 public Type GetType(string logicalName)
 {
     return(LocalCrmDatabase.GetType(Info, logicalName));
 }
 public EntityProperties For(LocalCrmDatabaseInfo info, Type type, string logicalName)
 {
     return(For(LocalCrmDatabase.GetType(info, logicalName)));
 }
 internal static Entity InvokeToEntity(Entity entity, LocalCrmDatabaseInfo info)
 {
     return(InvokeToEntity(entity, LocalCrmDatabase.GetType(info, entity.LogicalName)));
 }