C# - 查找 Class 的实例
C# - Finding instance of Class
如何从另一个应用层找到 class 的实例。我必须使用我的 MV(模型视图)从 DAL(数据访问层)刷新一个属性。完成任务的最简单方法是什么。这可能吗??
我的意思是:
SomeClass someClass = FindInstance<SomeClass>([params]);
感谢您的帮助。
我认为您试图做的是创建一个单例对象。这是最简单的形式。
public class SomeClass
{
//single instance used everywhere.
private static SomeClass _instance;
//private constructor so only the GetInstance() method can create an instance of this object.
private SomeClass()
{
}
//get single instance
public static SomeClass GetInstance()
{
if (_instance != null) return _instance;
return _instance = new SomeClass();
}
}
现在要访问对象的同一实例,只需调用
SomeClass singleton = SomeClass.GetInstance();
如果您想使用更高级的技术,那么您可以考虑使用依赖注入之类的技术,但是这是一个不同的讨论。
编辑:
public class SomeClass
{
private static SomeClass _instance;
private SomeClass()
{
}
public static SomeClass GetInstance()
{
if (_instance == null)
throw new Exception("Call SetInstance() with a valid object");
return _instance;
}
public static void SetInstance(SomeClass obj)
{
if (obj == null)
throw new ArgumentNullException(nameof(obj));
_instance = obj;
}
}
我解决了我的问题:
SomeClass instance = ServiceLocator.Current.GetInstance<SomeClass>();
如何从另一个应用层找到 class 的实例。我必须使用我的 MV(模型视图)从 DAL(数据访问层)刷新一个属性。完成任务的最简单方法是什么。这可能吗?? 我的意思是:
SomeClass someClass = FindInstance<SomeClass>([params]);
感谢您的帮助。
我认为您试图做的是创建一个单例对象。这是最简单的形式。
public class SomeClass
{
//single instance used everywhere.
private static SomeClass _instance;
//private constructor so only the GetInstance() method can create an instance of this object.
private SomeClass()
{
}
//get single instance
public static SomeClass GetInstance()
{
if (_instance != null) return _instance;
return _instance = new SomeClass();
}
}
现在要访问对象的同一实例,只需调用
SomeClass singleton = SomeClass.GetInstance();
如果您想使用更高级的技术,那么您可以考虑使用依赖注入之类的技术,但是这是一个不同的讨论。
编辑:
public class SomeClass
{
private static SomeClass _instance;
private SomeClass()
{
}
public static SomeClass GetInstance()
{
if (_instance == null)
throw new Exception("Call SetInstance() with a valid object");
return _instance;
}
public static void SetInstance(SomeClass obj)
{
if (obj == null)
throw new ArgumentNullException(nameof(obj));
_instance = obj;
}
}
我解决了我的问题:
SomeClass instance = ServiceLocator.Current.GetInstance<SomeClass>();