You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
2.5 KiB

9 months ago
using Autofac;
using HybirdFrameworkCore.Autofac;
using HybirdFrameworkCore.Configuration;
using log4net;
using log4net.Config;
9 months ago
using SqlSugar;
using SqlSugar.IOC;
namespace WinFormStarter
{
}
8 months ago
internal static class Program
9 months ago
{
private static readonly ILog Log = LogManager.GetLogger(typeof(Program));
9 months ago
public static IContainer Container { get; private set; }
/// <summary>
8 months ago
/// The main entry point for the application.
9 months ago
/// </summary>
[STAThread]
8 months ago
private static void Main()
9 months ago
{
// To customize application configuration such as set high DPI settings or default font,
// see https://aka.ms/applicationconfiguration.
ApplicationConfiguration.Initialize();
XmlConfigurator.ConfigureAndWatch(new FileInfo(AppDomain.CurrentDomain.BaseDirectory + @"\log4net.xml"));
8 months ago
Application.ThreadException += Application_ThreadException;
9 months ago
// 创建容器
var builder = new ContainerBuilder();
// 注册 SqlSugar 配置
builder.Register(c =>
{
var db = new SqlSugarClient(new ConnectionConfig
{
ConnectionString = AppSettingsConstVars.DbSqlConnection, // 设置数据库连接字符串
DbType = AppSettingsConstVars.DbDbType == IocDbType.MySql.ToString() ? DbType.MySql : DbType.SqlServer,
IsAutoCloseConnection = true,
InitKeyType = InitKeyType.Attribute // 如果使用实体类的属性进行主键标识,请设置为 InitKeyType.Attribute
});
return db;
}).As<ISqlSugarClient>().InstancePerLifetimeScope();
//获取所有窗体类型
var baseType = typeof(Form);
builder.RegisterAssemblyTypes(typeof(Program).Assembly)
.Where(t => baseType.IsAssignableFrom(t) && t != baseType).AsImplementedInterfaces()
.InstancePerDependency()
.Named(t => t.Name, typeof(Form));
builder.RegisterModule(new AutofacModuleRegister());
// 构建容器
Container = builder.Build();
9 months ago
AppInfo.Container = Container.BeginLifetimeScope("root");
Application.Run(AppInfo.Container.ResolveNamed<Form>("Form2"));
9 months ago
}
private static void Application_ThreadException(object sender, ThreadExceptionEventArgs ex)
{
Log.Error($"system error {ex.Exception}");
9 months ago
var result = MessageBox.Show("系统发生错误,您需要退出系统吗?", "异常", MessageBoxButtons.YesNo);
8 months ago
if (result == DialogResult.Yes) Application.Exit();
9 months ago
}
}