/// <summary> /// Get the instance /// </summary> /// <param name="ioc">The ioc container</param> /// <param name="createNew">True for a non-shared instance</param> /// <returns>The resolved instance</returns> public object GetInstance(IPortableIoC ioc, bool createNew) { if (createNew) { return(_creation(ioc)); } if (HasInstance) { return(_instance); } Monitor.Enter(_mutex); try { if (HasInstance) { return(_instance); } _instance = _creation(ioc); HasInstance = true; return(_instance); } finally { Monitor.Exit(_mutex); } }
//PortableIOC private static void Bootstrap() { // Create the container as usual. var container = new PortableIoc(); // Register your types, for instance: //container.Register<IMainViewModel>(ioc => new MainViewModel()); // Store the container for use by the application. App.container = container; // Support UI cross thread StaticFunctions.BaseContext = System.Threading.SynchronizationContext.Current; // Create the AbstractFunctions instance EtcUtility.Instance = new PhoneEtcUtility(); }
/// <summary> /// Grabs the typed implementation of the base instance /// </summary> /// <param name="ioc">The ioc container</param> /// <param name="createNew">True for a non-shared instance</param> /// <returns>The resolved instance</returns> public T GetTypedInstance(IPortableIoC ioc, bool createNew) { return((T)GetInstance(ioc, createNew)); }
public void TestInitialize() { _target = new PortableIoc(); }