Tôi có câu hỏi về Mẫu Singleton và MEF. Tôi mới triển khai Plugin MEF và tôi chưa tìm thấy câu trả lời.C# Mẫu Singleton và MEF
Chỉ có thể cung cấp một phiên bản của một lớp thông qua một Plugin được triển khai MEF?
lớp cũ của tôi là một cái gì đó như thế này:
#region Singleton
///
/// This class provide a generic and thread-safe interface for Singleton classes.
///
/// The specialized singleton which is derived
/// from SingletonBase<T>
public abstract class Base where T : Base
{
/* the lock object */
private static object _lock = new object();
/* the static instance */
private static T _instance = null;
///
/// Get the unique instance of .
/// This property is thread-safe!
///
public static T Instance
{
get
{
if (_instance == null)
{
lock (_lock)
{
if (_instance == null)
{
/* Create a object without to use new (where you need a public ctor) */
object obj = FormatterServices.GetUninitializedObject(typeof(T));
if (obj != null) // just 4 safety, but i think obj == null shouldn't be possible
{
/* an extra test of the correct type is redundant,
* because we have an uninitialised object of type == typeof(T) */
_instance = obj as T;
_instance.Init(); // now the singleton will be initialized
}
}
}
}
else
{
_instance.Refresh(); // has only effect if overridden in sub class
}
return _instance;
}
}
///
/// Called while instantiation of singleton sub-class.
/// This could be used to set some default stuff in the singleton.
///
protected virtual void Init()
{ }
///
/// If overridden this will called on every request of the Instance but
/// the instance was already created. Refresh will not called during
/// the first instantiation, for this will call Init.
///
protected virtual void Refresh()
{ }
}
#endregion
#region class
public class xy : Base
{
private bool run;
public xy()
{
this.run = false;
}
public bool isRunning()
{
return this.run;
}
public void start()
{
// Do some stuff
this.run = true;
}
}
#endregion
Ai đó có thể cung cấp cho tôi một ví dụ?
bản sao có thể có của [Có MEF cho vay bất kỳ giá trị nào đối với mẫu Singleton không?] (Http://stackoverflow.com/questions/4484619/does-mef-lend-any-value-to-the-singleton-pattern) – IAbstract
Xin lỗi, không liên quan đến câu hỏi, nhưng có vẻ như bạn đang thực hiện lại một cách không cần thiết 'Lazy '. Các dòng mã không liên quan! –
binki