diff --git a/src/Jamesnet.Core/BaseResourceLoader.cs b/src/Jamesnet.Core/BaseResourceLoader.cs
index 0f446f2..0bd109b 100644
--- a/src/Jamesnet.Core/BaseResourceLoader.cs
+++ b/src/Jamesnet.Core/BaseResourceLoader.cs
@@ -1,3 +1,5 @@
+using System;
+using System.Collections.Generic;
using System.Reflection;
namespace Jamesnet.Core;
diff --git a/src/Jamesnet.Core/Container.cs b/src/Jamesnet.Core/Container.cs
index fe44dd2..930b4b2 100644
--- a/src/Jamesnet.Core/Container.cs
+++ b/src/Jamesnet.Core/Container.cs
@@ -1,3 +1,7 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
namespace Jamesnet.Core;
public class Container : IContainer
diff --git a/src/Jamesnet.Core/ContainerProvider.cs b/src/Jamesnet.Core/ContainerProvider.cs
index 64e3399..1c71234 100644
--- a/src/Jamesnet.Core/ContainerProvider.cs
+++ b/src/Jamesnet.Core/ContainerProvider.cs
@@ -1,4 +1,6 @@
-namespace Jamesnet.Core;
+using System;
+
+namespace Jamesnet.Core;
public static class ContainerProvider
{
diff --git a/src/Jamesnet.Core/DefaultViewModelInitializer.cs b/src/Jamesnet.Core/DefaultViewModelInitializer.cs
index 2bf8886..c34e720 100644
--- a/src/Jamesnet.Core/DefaultViewModelInitializer.cs
+++ b/src/Jamesnet.Core/DefaultViewModelInitializer.cs
@@ -1,3 +1,6 @@
+using System;
+using System.Linq;
+
namespace Jamesnet.Core;
public class DefaultViewModelInitializer : IViewModelInitializer
diff --git a/src/Jamesnet.Core/IContainer.cs b/src/Jamesnet.Core/IContainer.cs
index c027cc9..2215afd 100644
--- a/src/Jamesnet.Core/IContainer.cs
+++ b/src/Jamesnet.Core/IContainer.cs
@@ -1,3 +1,5 @@
+using System;
+
namespace Jamesnet.Core;
public interface IContainer
diff --git a/src/Jamesnet.Core/IViewModelMapper.cs b/src/Jamesnet.Core/IViewModelMapper.cs
index 221fb51..4bd8347 100644
--- a/src/Jamesnet.Core/IViewModelMapper.cs
+++ b/src/Jamesnet.Core/IViewModelMapper.cs
@@ -1,4 +1,6 @@
-namespace Jamesnet.Core;
+using System;
+
+namespace Jamesnet.Core;
public interface IViewModelMapper
{
diff --git a/src/Jamesnet.Core/InjectAttribute.cs b/src/Jamesnet.Core/InjectAttribute.cs
index 6870137..12c23c6 100644
--- a/src/Jamesnet.Core/InjectAttribute.cs
+++ b/src/Jamesnet.Core/InjectAttribute.cs
@@ -1,4 +1,6 @@
-[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)]
+using System;
+
+[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)]
public class InjectAttribute : Attribute
{
}
diff --git a/src/Jamesnet.Core/Jamesnet.Core.csproj b/src/Jamesnet.Core/Jamesnet.Core.csproj
index fa71b7a..dbb7150 100644
--- a/src/Jamesnet.Core/Jamesnet.Core.csproj
+++ b/src/Jamesnet.Core/Jamesnet.Core.csproj
@@ -1,9 +1,9 @@
- net8.0
- enable
- enable
+ netstandard2.0
+ 10
+ disable
diff --git a/src/Jamesnet.Core/LayerManager.cs b/src/Jamesnet.Core/LayerManager.cs
index 404865e..de78166 100644
--- a/src/Jamesnet.Core/LayerManager.cs
+++ b/src/Jamesnet.Core/LayerManager.cs
@@ -1,3 +1,6 @@
+using System;
+using System.Collections.Generic;
+
namespace Jamesnet.Core;
public class LayerManager : ILayerManager
diff --git a/src/Jamesnet.Core/RelayCommand.cs b/src/Jamesnet.Core/RelayCommand.cs
index 1c458cf..ecbf6e5 100644
--- a/src/Jamesnet.Core/RelayCommand.cs
+++ b/src/Jamesnet.Core/RelayCommand.cs
@@ -1,3 +1,4 @@
+using System;
using System.Windows.Input;
namespace Jamesnet.Core;
diff --git a/src/Jamesnet.Core/ViewModelBase.cs b/src/Jamesnet.Core/ViewModelBase.cs
index cc0091e..7795e9c 100644
--- a/src/Jamesnet.Core/ViewModelBase.cs
+++ b/src/Jamesnet.Core/ViewModelBase.cs
@@ -1,3 +1,5 @@
+using System;
+using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime.CompilerServices;
diff --git a/src/Jamesnet.Core/ViewModelMapper.cs b/src/Jamesnet.Core/ViewModelMapper.cs
index a9cae44..75e3eb0 100644
--- a/src/Jamesnet.Core/ViewModelMapper.cs
+++ b/src/Jamesnet.Core/ViewModelMapper.cs
@@ -1,4 +1,7 @@
-namespace Jamesnet.Core;
+using System;
+using System.Collections.Generic;
+
+namespace Jamesnet.Core;
public class ViewModelMapper : IViewModelMapper
{
diff --git a/src/Jamesnet.Core/YamlConverter.cs b/src/Jamesnet.Core/YamlConverter.cs
index 3f3e33b..aa78560 100644
--- a/src/Jamesnet.Core/YamlConverter.cs
+++ b/src/Jamesnet.Core/YamlConverter.cs
@@ -1,3 +1,7 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
using System.Reflection;
namespace Jamesnet.Core
diff --git a/src/Jamesnet.Core/YamlData.cs b/src/Jamesnet.Core/YamlData.cs
index 7bc0b31..f20f612 100644
--- a/src/Jamesnet.Core/YamlData.cs
+++ b/src/Jamesnet.Core/YamlData.cs
@@ -1,4 +1,6 @@
-namespace Jamesnet.Core;
+using System.Collections.Generic;
+
+namespace Jamesnet.Core;
public class YamlData : List
{
diff --git a/src/Jamesnet.Core/YamlExtensions.cs b/src/Jamesnet.Core/YamlExtensions.cs
index 85412a8..30ce1e4 100644
--- a/src/Jamesnet.Core/YamlExtensions.cs
+++ b/src/Jamesnet.Core/YamlExtensions.cs
@@ -1,4 +1,7 @@
-namespace Jamesnet.Core;
+using System;
+using System.Collections.Generic;
+
+namespace Jamesnet.Core;
public static class YamlExtensions
{
diff --git a/src/Jamesnet.Core/YamlItem.cs b/src/Jamesnet.Core/YamlItem.cs
index f78e80e..ac342a7 100644
--- a/src/Jamesnet.Core/YamlItem.cs
+++ b/src/Jamesnet.Core/YamlItem.cs
@@ -1,3 +1,6 @@
+using System;
+using System.Collections.Generic;
+
namespace Jamesnet.Core;
public class YamlItem : Dictionary
diff --git a/src/Jamesnet.Core2/AppBootstrapper.cs b/src/Jamesnet.Core2/AppBootstrapper.cs
new file mode 100644
index 0000000..e0fa4d8
--- /dev/null
+++ b/src/Jamesnet.Core2/AppBootstrapper.cs
@@ -0,0 +1,37 @@
+namespace Jamesnet.Core;
+
+public abstract class AppBootstrapper
+{
+ protected readonly IContainer Container;
+ protected readonly ILayerManager Layer;
+ protected readonly IViewModelMapper ViewModelMapper;
+
+ protected AppBootstrapper()
+ {
+ Container = new Container();
+ Layer = new LayerManager();
+ ViewModelMapper = new ViewModelMapper();
+ ContainerProvider.SetContainer(Container);
+ ConfigureContainer();
+ }
+
+ protected virtual void ConfigureContainer()
+ {
+ Container.RegisterInstance(Container);
+ Container.RegisterInstance(Layer);
+ Container.RegisterInstance(ViewModelMapper);
+ Container.RegisterSingleton();
+ }
+
+ protected abstract void RegisterViewModels();
+ protected abstract void RegisterDependencies();
+
+ public void Run()
+ {
+ RegisterViewModels();
+ RegisterDependencies();
+ OnStartup();
+ }
+
+ protected abstract void OnStartup();
+}
diff --git a/src/Jamesnet.Core2/BaseResourceLoader.cs b/src/Jamesnet.Core2/BaseResourceLoader.cs
new file mode 100644
index 0000000..0f446f2
--- /dev/null
+++ b/src/Jamesnet.Core2/BaseResourceLoader.cs
@@ -0,0 +1,43 @@
+using System.Reflection;
+
+namespace Jamesnet.Core;
+
+public abstract class BaseResourceLoader
+{
+ protected abstract string AssemblyName { get; }
+ protected abstract string ResourcePath { get; }
+ protected abstract IEnumerable ConvertToItems(YamlData rawData);
+ protected abstract TResult OrganizeItems(IEnumerable items);
+
+ public TResult LoadAndOrganize()
+ {
+ Assembly assembly = Assembly.Load(AssemblyName);
+ YamlData rawData = LoadYamlData(assembly, ResourcePath);
+ IEnumerable items = ConvertToItems(rawData);
+ return OrganizeItems(items);
+ }
+
+ private YamlData LoadYamlData(Assembly assembly, string resourcePath)
+ {
+ YamlData yamlData = new YamlData();
+
+ object result = YamlConverter.ParseResource(assembly, resourcePath);
+ IEnumerable