diff --git a/res/Resource.cs b/res/Resource.cs index 65f4431..6d9f08f 100644 --- a/res/Resource.cs +++ b/res/Resource.cs @@ -24,7 +24,7 @@ public interface Res_old } [DebuggerDisplay("Path = {path}")] -public class Ref : lib.I_Serialize +abstract public class Ref : lib.I_Serialize { static public bool s_verboseLogging = false; @@ -47,13 +47,13 @@ public class Ref : lib.I_Serialize _dbgLine = dbgLine; } - virtual public object lookup( + abstract public object lookup( string reason = "", [CallerMemberName] string dbgName = "", [CallerFilePath] string dbgPath = "", [CallerLineNumber] int dbgLine = 0 - ) => default; + ); virtual public void OnChange() @@ -116,12 +116,13 @@ public class Ref : Ref where T : class, new() base( !string.IsNullOrWhiteSpace(filename) ? filename : $"{{{dbgName}_{log.whatFile(dbgPath)}}}" , reason, dbgName, dbgPath, dbgLine ) { if( s_verboseLogging ) log.info( $"Ref {GetType().Name} {GetType().GenericTypeArguments[0]} path {Filename}" ); + m_res = default; } override internal void load() { - m_res = Mgr.load( Filename, _reason, _dbgName, _dbgPath, _dbgLine, _dbgExp ); + m_res = Mgr.load( Filename, _reason, _dbgName, _dbgPath, _dbgLine ); if( s_verboseLogging ) log.info( $"Ref.load {GetType().Name} {GetType().GenericTypeArguments[0]} path {Filename}" ); } @@ -161,23 +162,20 @@ public class Ref : Ref where T : class, new() } [NonSerialized] - protected T m_res; + protected T? m_res; } public class Resource { - static public Mgr mgr; + static public Mgr mgr = new(); } public delegate T Load( string filename ); -class LoadHolder +abstract class LoadHolder { - internal virtual object load() - { - return null; - } + public abstract object load(); } @@ -190,7 +188,7 @@ class LoadHolder : LoadHolder public Load _fnLoad; - internal override object load() + public override object load() { return load(); } @@ -212,9 +210,9 @@ class ResCache where T : class, new() public class Mgr { + static public void startup() { - Resource.mgr = new Mgr(); } static public void register( Load loader ) @@ -266,7 +264,7 @@ public class Mgr var lh = Activator.CreateInstance( lhType, loader ) as LoadHolder; - ImmutableInterlocked.TryAdd( ref Resource.mgr.m_loaders, t, lh ); + ImmutableInterlocked.TryAdd( ref Resource.mgr.m_loaders!, t, lh ); } } return; @@ -319,13 +317,11 @@ public class Mgr } */ - static public T? load( string filename, + static public T load( string filename, string reason = "", [CallerMemberName] string dbgName = "", [CallerFilePath] string dbgPath = "", - [CallerLineNumber] int dbgLine = 0, - [CallerArgumentExpression("fn")] - string dbgExp = default + [CallerLineNumber] int dbgLine = 0 ) where T : class, new() { if( ResCache.s_cache.TryGetValue( filename, out var holder ) ) @@ -373,7 +369,7 @@ public class Mgr { var loader = loaderGen as LoadHolder; - var v = loader._fnLoad( filename ); + var v = loader!._fnLoad( filename ); var weak = new WeakReference( v ); @@ -408,7 +404,7 @@ public class Mgr static ImmDefLoad s_deferredLoad = ImmDefLoad.Empty; - Mgr() + public Mgr() { log.info( $"Creating Res.Mgr" );