3e81e27160
+ Fixed async operations lock for Dispose() pattern in working files. + Rewrote StorageService.cs: --- Now uses ContentPath instead of raw strings where possible. --- Now throws exceptions for developer errors and critical program states. + Rewrote ModConfigService.cs: --- All functions are now completely async. + Removed ConfigProfilesResources completely as they exist in common Config xml files. + Somewhat simplified package data and processes.
38 lines
1.2 KiB
C#
38 lines
1.2 KiB
C#
using System;
|
|
using Microsoft.Toolkit.Diagnostics;
|
|
|
|
namespace Barotrauma.LuaCs.Services;
|
|
|
|
/// <summary>
|
|
/// Defines a service that can be reset to it's post-constructor state and reused without needing to be disposed.
|
|
/// Intended for persistent services.
|
|
/// </summary>
|
|
public interface IReusableService : IService
|
|
{
|
|
/// <summary>
|
|
/// Returns the service to its original state (post-instantiation).
|
|
/// Allows a service instance to be reused without disposing of the instance.
|
|
/// </summary>
|
|
FluentResults.Result Reset();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Base interface inherited by all services.
|
|
/// </summary>
|
|
/// <exception cref="ObjectDisposedException">Throws exception if `IsDisposed` return true.</exception>
|
|
public interface IService : IDisposable
|
|
{
|
|
bool IsDisposed { get; }
|
|
public void CheckDisposed()
|
|
{
|
|
if (IsDisposed)
|
|
ThrowHelper.ThrowObjectDisposedException($"Tried to call method on disposed object '{this.GetType().Name}'!");
|
|
}
|
|
|
|
static void CheckDisposed(IService service)
|
|
{
|
|
if (service.IsDisposed)
|
|
ThrowHelper.ThrowObjectDisposedException($"Tried to call method on disposed object '{service.GetType().Name}'!");
|
|
}
|
|
}
|