在查看几个项目的源代码时,我发现了一个我不太理解的模式。例如,在FubuMVC和Common Service LocatorFunc
中,当静态提供程序更改时使用 a 。谁能解释使用的好处:
private static Func<IServiceLocator> currentProvider;
public static IServiceLocator Current
{
get { return currentProvider(); }
}
public static void SetLocatorProvider(Func<IServiceLocator> newProvider)
{
currentProvider = newProvider;
}
代替:
private static IServiceLocator current;
public static IServiceLocator Current
{
get { return current; }
}
public static void SetLocator(IServiceLocator newInstance)
{
current = newInstance;
}