2014-01-08 4 views
0

Итак, у меня есть класс.Как сделать экземпляр глобально доступным в C#?

Затем я сделать экземпляр где-то:

Class1 somesinstance = new Class1; 

Теперь я хочу, чтобы получить доступ к этому экземпляру в любом месте, это возможно?

+2

Либо создайте класс 'static', либо следуйте шаблону Singleton. –

+1

Возможно использование шаблона [Singleton] (http://en.wikipedia.org/wiki/Singleton_pattern), но он нахмурился, потому что обычно это (не всегда) признак плохого дизайна. – Rik

ответ

3

Ах, неуловимый синглтон шаблон.

Если у вас есть немного свободного времени, я очень рекомендую статью Джона тарелочкам по теме: http://csharpindepth.com/Articles/General/Singleton.aspx

Вот простой пример:

public sealed class YourSingleton 
{ 
    private static readonly YourSingleton instance = new YourSingleton(); 

    static YourSingleton() {} 

    private YourSingleton() { } 

    public static YourSingleton Instance 
    { 
     get { return instance ; } 
    } 
} 
0

Если вам нужен только один экземпляр, используйте одноплодной шаблон:

public class Class1 
{ 
    private Class1() 
    { 
     ... 
    } 


    private static readonly Class1 _instance = new Class1(); 

    public static Class1 Instance { get { return _instance; } } 
} 

И получить доступ к экземпляру так:

Class1.Instance 

В противном случае, просто выставить его как статическое свойство в классе ,

0

Если где-нибудь значит, ваше решение - Вы можете использовать статический класс со статическим свойством

public static class Shared 
{ 
    private static Class1 _myclass; 

    public static Class1 MyClass{ 
     get 
     { 
      return _myclass??(_myclass=new Class1()); 
     } 
    } 
} 
0

Вы можете в Singleton Pattern следующим образом:

public class MyClass 
{ 
    private static MyClass myClass; 

    public static MyClass MyClassInstance 
    { 
      get { return myClass ?? (myClass = new MyClass()); } 
    } 

    private MyClass() 
    { 
      //private constructor makes it where this class can only be created by itself 
    } 
} 

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

MyClass.MyClassInstance 
0

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

public static class SharedResources 
{ 
    public static Class1 obj1 {get; set;} 
    public static Class2 obj2 {get; set;} 

    // ... 
} 
Смежные вопросы