2013-09-24 4 views
0

У меня есть этот класс:C# - инициализировать статический класс как нестатический класс?

[DataContract] 
public class Connection 
{ 
    [DataMember] 
    public string UserName { get; set; } 

    public Connection(string userName) 
    { 
     UserName = userName; 
    } 
} 

Теперь мне нужен этот класс, как есть, но в рамках моего проекта я бы реально использовать класс как это:

public static class Connection 
{ 
    public static string UserName { get; set; } 

    static Connection() 
    { 
    } 
} 

Есть ли способ объединения этот код вместе, поэтому я могу использовать обе версии этого класса в моем проекте (где-то я хочу иметь статический, единственный экземпляр Connection, но где-то еще я хочу иметь список подключений)?

+5

Вы хотите синглтона , или статическая ссылка – SLaks

ответ

5

Вы можете объединить код, как это:

[DataContract] 
public class Connection 
{ 
    [DataMember] 
    public string UserName { get; set; } 

    public Connection(string userName) 
    { 
     UserName = userName; 
    } 

    public static Connection Default { get; set; } 

    static Connection() 
    { 
     Default = new Connection("username"); 
    } 

} 

... и использовать его как это:

List<Connection> connections = new List<Connection>(); 

.. или как это:

string defaultConnectionUserName = Connection.Default.UserName; 
+0

Также дает вам возможность делать «Список ...', другая часть вопроса – Shoe

+0

ваше соединение по умолчанию создает соединение с жестко запрограммированным пользователем с именем «имя пользователя». Я не могу понять, как это может быть полезно. –

+0

@ LuisFilipe, это просто пример. Вы можете прочитать имя пользователя по умолчанию из 'web.config' или' app.config' или database et al. –

0

Вы не можете использовать статический класс в качестве аргумента типа. Поэтому в ваших обстоятельств вы не можете иметь:

public List<Connection> { get; set; } 

Посмотреть this ответ Джон Скит для получения дополнительной информации.

Я предлагаю изучить принципы объектно-ориентированного программирования SOLID и попытаться отвлечь функциональность класса «соединение» от кратных. Если вы предоставите больше информации о том, что вы пытаетесь сделать, я с радостью сделаю предложения.

Смежные вопросы