using System; using TweetLib.Core.Application; namespace TweetLib.Core{ public sealed class App{ public static IAppErrorHandler ErrorHandler { get; private set; } // Builder public sealed class Builder{ public IAppErrorHandler? ErrorHandler { get; set; } // Validation internal void Initialize(){ App.ErrorHandler = Validate(ErrorHandler, nameof(ErrorHandler))!; } private T Validate<T>(T obj, string name){ if (obj == null){ throw new InvalidOperationException("Missing property " + name + " on the provided App."); } return obj; } } } }