[英]Returning a singleton from one method call
我有这个课:
public static class GameControl
{
public static DNControl GetDayNightControl()
{
return DNControl.Instance;
}
public static MapHandler GetMapHandler()
{
return MapHandler.Instance;
}
public static TemperatureControl GetTemperatureControl()
{
return TemperatureControl.Instance;
}
}
所有的返回类型都是Singletons。你们中的任何一个都可以给我一个主意,我如何用一个单一的方法返回它们中的任何一个?
创建一个包装器类,然后返回它。
public class WrapperClass
{
public DNControl DayNightControl {get; internal set;}
public MapHandler MapHandler {get; internal set;}
public TemperatureControl TemperatureControl {get; internal set;}
}
public static class GameControl
{
public static WrapperClass GetEverything()
{
var wrapper = new WrapperClass();
wrapper.DayNightControl = DNControl.Instance;
wrapper.MapHandler = MapHandler.Instance;
wrapper.TemperatureControl = TemperatureControl.Instance;
return wrapper;
}
// if that's still pertinent you may keep your individual methods too
}
不过,我应该提到:我真的看不出将这些内容结合在一起的意义。 在这里可能看不到更大的图片,但是在我看来,您能够从静态类中调用单个单例的实际方式是可以的。 您可能会从中获得更多期望增加值的详细信息,从而受益。
您可以使用泛型,例如
public static T GetControl<T>()
{
// determine what type to return based on T, and return it
}
我没有尝试过,但是从我的头顶上,我认为类似的事情应该起作用。
您可以通过反射尝试这样的操作
public static class GameControl
{
public static T GetControl<T>()
{
return (T)typeof(T).GetProperty("Instance").GetValue(null);
}
}
不清楚您要问的是什么,但是在一种方法调用中返回所有内容的一种方法是
public static class GameControl
{
public static void GetSingletons(out DNControl dnControl, out MapHandler mapHandler, out TemperatureControl tc)
{
dnControl = DNControl.Instance;
mapHandler = MapHandler.Instance;
tc = TemperatureControl.Instance;
return;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.