Как мог быть реализован синглтон, который заполняет его значения из db в C #? - PullRequest
3 голосов
/ 04 июня 2009

Я пытаюсь реализовать пример Джона Скита

public sealed class Singleton
{
    Singleton()
    {
    }

    public static Singleton Instance
    {
        get
        {
            return Nested.instance;
        }
    }

    class Nested
    {
        // Explicit static constructor to tell C# compiler
        // not to mark type as beforefieldinit
        static Nested()
        {
        }

        internal static readonly Singleton instance = new Singleton();
    }
}

Ответы [ 2 ]

4 голосов
/ 04 июня 2009

Все ваши операции с базой данных в конструкторе для Singleton.

Не зная, что это за операции, мы не сможем предоставить гораздо больше помощи, но именно здесь вы должны их разместить. Очевидно, это не означает создание массивного конструктора - вы все равно можете разделить код на обычные методы, но вам нужно вызывать их из конструктора.

0 голосов
/ 04 июня 2009

Почти прямая копия вставки из BlogEngine ...

    System.Collections.Specialized.ListDictionary lstSettings;
    string msg; 

    MyApp.Bo.AppUser objAppUser = new AppUser();
    MyApp.Db.SqlServer2008Provider p = new MyApp.Db.SqlServer2008Provider(objAppUser);



    p.LoadSettings(out msg, out lstSettings); 

    foreach (string key in lstSettings.Keys)
    {

        string name = key;
        string value = (string)lstSettings[key];

        #region CycleTroughobjAppSettingProperties
        Type objAppSettingsType = typeof(MyApp.Bo.AppSettings);
        foreach (PropertyInfo propInfo in objAppSettingsType.GetProperties())
        {
            if (propInfo.Name.Equals(name, StringComparison.OrdinalIgnoreCase))
            {

                try
                {
                    propInfo.SetValue(this, Convert.ChangeType(value, propInfo.PropertyType, CultureInfo.CurrentCulture), null);
                }
                catch
                {
                    logger.Fatal("Failed setting the Application settings ");
                }
                break;
            }
        }
        #endregion CycleTroughobjAppSettingProperties
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...