Доброго времени суток.
Возникла проблема с регистрацией типов в IContainerRegistry с фабрикой.
Могу регистрировать так:
containerRegistry.RegisterSingleton<Config>();
А нужно что-то подобное:
containerRegistry.RegisterSingleton<Config>(Config.Load);
Пробовал ставить пакеты: Prism.DryIoc.Extensions и Prism.Container.Extensions, результата ноль, только ошибка
StackTrace:
System.NotImplementedException
HResult=0x80004001
Сообщение = Метод или операция не реализована.
Источник = Prism.Container.Extensions
Трассировка стека:
в Prism.Ioc.IExtendedContainerRegistryExtensions.RegisterSingletonFromDelegate(IContainerRegistry containerRegistry, Type serviceType, Func`1 factoryMethod)
в Prism.Ioc.IExtendedContainerRegistryExtensions.RegisterSingletonFromDelegate[T](IContainerRegistry containerRegistry, Func`1 factoryMethod)
в Malinka.App.RegisterTypes(IContainerRegistry containerRegistry) в C:\Users\Alexandr\source\repos\Malinka\Malinka\App.xaml.cs:строка 34
в Prism.PrismApplicationBase.Initialize()
в Prism.PrismApplicationBase.InitializeInternal()
в Prism.PrismApplicationBase.OnStartup(StartupEventArgs e)
в System.Windows.Application.<.ctor>b__1_0(Object unused)
в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
в System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
в System.Windows.Threading.DispatcherOperation.InvokeImpl()
в System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
в MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
в MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
в System.Windows.Threading.DispatcherOperation.Invoke()
в System.Windows.Threading.Dispatcher.ProcessQueue()
в System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
в MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
в MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
в System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
в System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
в MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
в MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
в System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
в System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
в System.Windows.Application.RunDispatcher(Object ignore)
в System.Windows.Application.RunInternal(Window window)
в System.Windows.Application.Run(Window window)
в System.Windows.Application.Run()
в Malinka.App.Main()
Так же пробовал с Prism.Unity, но выходит какой-то страшный код:
var container = containerRegistry.GetContainer();
container.RegisterFactory(typeof(Config), null, (_, __, ___) => Config.Load(), new SingletonLifetimeManager());
Решение:
using DryIoc;
...
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.GetContainer().RegisterDelegate(x => Config.Load(), Reuse.Singleton);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть какой-то способ получить информацию о заполненности диска на сервере в локальной сети? Если это Windows-сервер, то можно воспользоваться...