我有这堂课:
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。你们中的任何一个人都可以给我一个想法,我怎么能用一种方法返回它们中的任何一个?
答案 0 :(得分:2)
创建一个包装类并返回它。
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
}
我应该提一下:我真的没有意识到要把这些放在一起的重点。可能会有更大的图片我没有在这里看到,但在我看来,你真正能够从静态类中调用你的单个单身的方法很好。您可以通过提供有关您期望的附加值的更多详细信息而受益。
答案 1 :(得分:0)
您可以使用泛型,例如
public static T GetControl<T>()
{
// determine what type to return based on T, and return it
}
我没有尝试过,但是我认为这样的事情应该有用。
答案 2 :(得分:0)
你可以尝试使用反射
这样的东西public static class GameControl
{
public static T GetControl<T>()
{
return (T)typeof(T).GetProperty("Instance").GetValue(null);
}
}
答案 3 :(得分:0)
不清楚你问的是什么,但是在一个方法调用中返回所有方法的一种方法是
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;
}
}