Re: SmartClient - помогите красиво сделать :-)
От: Unikode  
Дата: 02.01.07 17:36
Оценка:
для Singleton-ов пришлось немного доделать код (ниже)
Только вот у меня сомнения закрались, а правильно ли я "подключаю" библиотеки??? Это вообще так делается или есть какой-то более верный способ?

        [STAThread]
        static void Main(string[] args)
        {
                 ...
// тут, естественно, цикл будет чтобы подключить все библиотеки.....
// *****************************************************************
            // читаем интерфейс библиотеки
            foreach(string className in classNames)
            {
                try
                {
                    domain.CreateInstanceFrom(urlDLL, className);
                    break;
                }
                catch
                {
                    if(sigletonLoad(urlDLL, className)) break;
                }
            }
// *****************************************************************
                 ...
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="url"></param>
        /// <param name="className"></param>
        /// <returns></returns>
        static bool sigletonLoad(string url, string className)
        {
            bool success = false;

            try
            {
                Assembly assemblyContent = Assembly.LoadFrom(url);
                Type type = assemblyContent.GetType(className);
                MethodInfo[] methods = type.GetMethods();
                foreach(MethodInfo method in methods)
                {
                    try
                    {
                        if(method.Name.ToLower().EndsWith("getinstance") && method.IsStatic)
                        {
                            method.Invoke(null, null);
                            success = true;
                            break;
                        }
                    }
                    catch{}
                }
            }
            catch{}

            return success;
        }

...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.