diff --git a/Common/Common.csproj b/Common/Common.csproj
index 6480322..b276843 100644
--- a/Common/Common.csproj
+++ b/Common/Common.csproj
@@ -45,6 +45,7 @@
+
diff --git a/Core/Config.cs b/Core/Config.cs
index a9cceeb..bbd14d9 100644
--- a/Core/Config.cs
+++ b/Core/Config.cs
@@ -7,26 +7,24 @@ namespace FLocal.Core {
public class Config where T : Config {
- private static Config _instance;
+ private static T _instance;
- public static Config instance {
+ public static T instance {
get {
if(_instance == null) throw new FLocalException("not initialized");
return _instance;
}
- private set {
- lock(_instance) {
- if(_instance != null) throw new FLocalException("already initialized");
- _instance = value;
- }
- }
}
- private Config() {
+ protected Config() {
}
- public static void doInit(Config config) {
- _instance = config;
+ protected static void doInit(Func configCreator) {
+ if(_instance != null) throw new FLocalException("already initialized");
+ lock(_instance) {
+ if(_instance != null) throw new FLocalException("already initialized");
+ _instance = configCreator();
+ }
}
}