2013-07-09 2 views
2

По-прежнему пытается познакомиться с C# (В основном работает с C). У меня есть класс «Устройство» и хотел бы создать экземпляр класса, но также хотел бы получить доступ к экземплярам по всему миру, потому что я так сильно их использую в своих графических интерфейсах.Глобальные экземпляры класса

public class Device 
    { 
     public string Name; 
     public List<string> models = new List<string>(); 
     public List<string> revisions = new List<string>(); 
     ... 
    } 

Как-то заявить об этом во всем мире:

Device Device1 = new Device(); 
Device1.Name = "Device1"; 

Тогда доступ к нему позже в методе WPF:

private void DeviceViewItem_Selected(object sender, RoutedEventArgs e) 
    { 
     TreeViewItem selected = (TreeViewItem)sender; 

     if (selected.Name == Device1.Name) 
     { 
      Device1.Models.Add("something"); 
      Device1.Revisions.Add("something"); 
     } 

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

+3

Вы ищете 'static'. – SLaks

+0

Если вам нужно несколько синглтонов, вы можете посмотреть в [Многоугольник] (http://en.wikipedia.org/wiki/Multiton_pattern). –

ответ

6

Создать новый экземпляр и назначить его static собственности или поле: с

public class AnyClass 
{ 
    public static readonly Device ThisFieldCanBeReachedFromAnywhere = new Device(); 
} 

Обратите внимание, что класс AnyClass не должен быть статичным (что бы, однако, означает, что все члены должны быть статическими).

Также обратите внимание, что ключевое слово readonly не требуется, это просто хорошая практика для одиночных игроков (например, Марк, высказанный в его комментарии).

+4

, возможно, делает это и для чтения. Это обычное явление для синглтона. – MJM

+0

LightBricko, именно то, что мне нужно. Я смотрел повсюду и натыкался на участников Static, но не думал о создании нового экземпляра Static. Благодаря! – DevynB

+0

@Mark Спасибо за упоминание только что прочитанного. Определенно хочу придерживаться хорошей практики;) – DevynB

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