Ejemplo n.º 1
0
 /// <summary>
 /// Constructor that accepts type name.
 /// </summary>
 /// <param name="typeName">Type name.</param>
 /// <param name="factoryDelegate">Factory delegate to create objects of this type.</param>
 public TypeHelper(string typeName, Func <object[], object> factoryDelegate = null)
 {
     _isRuntimeType   = true;
     _factoryDelegate = factoryDelegate ?? (args => VMController.CreateInstance(Type, args));
     Name             = typeName.Contains(".") ? typeName.Split('.').Last() : typeName;
     FullName         = typeName;
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Constructor that accepts type.
 /// </summary>
 /// <param name="type">Type.</param>
 public TypeHelper(Type type)
 {
     Type             = type;
     Name             = type.Name;
     FullName         = type.FullName;
     _factoryDelegate = args => VMController.CreateInstance(Type, args);
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Constructor that accepts type.
 /// </summary>
 /// <param name="type">Type.</param>
 /// <param name="factoryDelegate">Factory delegate to create objects of this type.</param>
 public TypeHelper(Type type, Func <object[], object> factoryDelegate = null)
 {
     Type             = type;
     Name             = type.Name;
     FullName         = type.FullName;
     _factoryDelegate = factoryDelegate ?? (args => VMController.CreateInstance(Type, args));
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Creates a view model instance.
        /// </summary>
        /// <param name="registeredTypes">Registered view model types.</param>
        /// <param name="vmTypeName">View model type name.</param>
        /// <param name="vmInstanceId">Optional view model instance identifier.</param>
        /// <param name="vmNamespace">Optional view model type namespace.</param>
        /// <returns></returns>
        internal static BaseVM Create(IEnumerable <Type> registeredTypes, string vmTypeName, string vmInstanceId = null, string vmNamespace = null)
        {
            Type vmType = vmNamespace != null?
                          registeredTypes.FirstOrDefault(i => i.FullName == $"{vmNamespace}.{vmTypeName}") :
                              registeredTypes.FirstOrDefault(i => i.Name == vmTypeName);

            if (vmType == null)
            {
                return(null);
            }

            try
            {
                if (vmInstanceId != null)
                {
                    var instance = VMController.CreateInstance(vmType, new object[] { vmInstanceId }) as INotifyPropertyChanged;
                    if (instance != null)
                    {
                        return(instance is BaseVM ? instance as BaseVM : new BaseVM(instance));
                    }
                }
            }
            catch (MissingMethodException)
            {
                Trace.Fail($"[dotNetify] ERROR: '{vmTypeName}' has no constructor accepting instance ID.");
            }

            try
            {
                var instance = VMController.CreateInstance(vmType, null) as INotifyPropertyChanged;
                if (instance != null)
                {
                    return(instance is BaseVM ? instance as BaseVM : new BaseVM(instance));
                }
            }
            catch (MissingMethodException)
            {
                Trace.Fail($"[dotNetify] ERROR: '{vmTypeName}' has no parameterless constructor.");
            }

            return(null);
        }