HamBook – Rev 56

Subversion Repositories:
Rev:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace HamBook.Radios.Generic
{
    public abstract class RadioMenu
    {
        public abstract int[] Indices { get; }

        public abstract int MenuToCAT(int menu, string value);

        public static RadioMenu Create(string radio)
        {
            foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
            {
                foreach (var type in assembly.GetTypes())
                {
                    if (typeof(RadioMenu).IsAssignableFrom(type))
                    {
                        var radioAttribute = type.GetCustomAttribute<RadioAttribute>();

                        if (radioAttribute != null && radioAttribute.Radio == radio)
                            return (RadioMenu)Activator.CreateInstance(type);
                    }
                }
            }

            return null;
        }
    }
}