using System.IO; using System.Reflection; using System.Runtime.Loader; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using Azaion.Suite.Services.DTO; using Microsoft.Extensions.Options; namespace Azaion.Suite; public partial class Loader : Window { private readonly IResourceLoader _resourceLoader; private readonly IOptions _localFilesConfig; public Loader(IResourceLoader resourceLoader, IOptions localFilesConfig) { _resourceLoader = resourceLoader; _localFilesConfig = localFilesConfig; InitializeComponent(); } private async void RunClick(object sender, RoutedEventArgs e) { var stream = new MemoryStream(); await _resourceLoader.LoadAnnotator(TbEmail.Text, TbPassword.Password, stream); stream.Seek(0, SeekOrigin.Begin); var loader = new AssemblyLoadContext("DynamicContext", isCollectible: true); var annotatorAssembly = loader.LoadFromStream(stream); var appType = annotatorAssembly.GetType("Azaion.Annotator.App"); var appInstance = Activator.CreateInstance(appType); var runMethod = appType.GetMethod("Run", BindingFlags.Public | BindingFlags.Instance); if (runMethod != null) { runMethod.Invoke(appInstance, null); } // var entryPoint = annotatorAssembly.EntryPoint; // if (entryPoint == null) // return; // // var o = annotatorAssembly.CreateInstance(entryPoint.Name); // entryPoint.Invoke(o, null); } private void CloseClick(object sender, RoutedEventArgs e) => Close(); private void MainMouseMove(object sender, MouseEventArgs e) { if (e.OriginalSource is Button || e.OriginalSource is TextBox) return; if (e.LeftButton == MouseButtonState.Pressed) DragMove(); } }