Итак, у меня есть класс.Как сделать экземпляр глобально доступным в C#?
Затем я сделать экземпляр где-то:
Class1 somesinstance = new Class1;
Теперь я хочу, чтобы получить доступ к этому экземпляру в любом месте, это возможно?
Итак, у меня есть класс.Как сделать экземпляр глобально доступным в C#?
Затем я сделать экземпляр где-то:
Class1 somesinstance = new Class1;
Теперь я хочу, чтобы получить доступ к этому экземпляру в любом месте, это возможно?
Ах, неуловимый синглтон шаблон.
Если у вас есть немного свободного времени, я очень рекомендую статью Джона тарелочкам по теме: 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 ; }
}
}
Если вам нужен только один экземпляр, используйте одноплодной шаблон:
public class Class1
{
private Class1()
{
...
}
private static readonly Class1 _instance = new Class1();
public static Class1 Instance { get { return _instance; } }
}
И получить доступ к экземпляру так:
Class1.Instance
В противном случае, просто выставить его как статическое свойство в классе ,
Если где-нибудь значит, ваше решение - Вы можете использовать статический класс со статическим свойством
public static class Shared
{
private static Class1 _myclass;
public static Class1 MyClass{
get
{
return _myclass??(_myclass=new Class1());
}
}
}
Вы можете в 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
Вы можете создать статический класс, содержащий общие экземпляры, доступные из каждого класса вашего приложения.
public static class SharedResources
{
public static Class1 obj1 {get; set;}
public static Class2 obj2 {get; set;}
// ...
}
Либо создайте класс 'static', либо следуйте шаблону Singleton. –
Возможно использование шаблона [Singleton] (http://en.wikipedia.org/wiki/Singleton_pattern), но он нахмурился, потому что обычно это (не всегда) признак плохого дизайна. – Rik