从一个方法调用返回单例

时间:2014-03-21 13:56:45

标签: c# .net singleton

我有这堂课:

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。你们中的任何一个人都可以给我一个想法,我怎么能用一种方法返回它们中的任何一个?

4 个答案:

答案 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;
    }

}