Appearance
配置注册
配置注册适用于构造函数的参数无法自动注入、获取实例方式特殊、同一个类型需要有多个版本实例的情况。配置类必须有 [Configuration] 标识,此时类中的所有的 public 方法都用于生成实例。 以下以数据库连接为例
基本用法
C#
[Configuration]
public class Config
{
public DbConnection DataSource()
{
return new MySqlConnection("server=10.225.3.2;user=root;database=user_system;port=3306;password=****");
}
}
[Include]
public class Program
{
/// <summary>
/// 默认注入,会注入最高版本
/// </summary>
[AutoAssemble]
public static DbConnection connection;
static void Main(string[] args)
{
AsDIContext.Start();
Console.WriteLine(connection.ConnectionString);
}
}输出结果:
sh
> server=10.225.3.2;user id=root;database=user_system;port=3306;password=****服务版本
同一个服务可以配置多个版本,用于获取同一个类型的不同版本的实例。注入时,如果没有规定版本,容器会将最高版本的实现注入,如果规定了版本,容器会将相应版本的实现注入
C#
[Configuration]
public class Config
{
[Instance(1)]
public DbConnection OrderSystemDataSource()
{
return new SqlConnection("Server=10.225.3.1; Database=order_system; User ID=sa; Password=*****;");
}
[Instance(2)]
public DbConnection UserSystemDataSource()
{
return new MySqlConnection("server=10.225.3.2;user=root;database=user_system;port=3306;password=****");
}
}
[Include]
public class Program
{
/// <summary>
/// 默认注入,会注入最高版本
/// </summary>
[AutoAssemble(1)]
public static DbConnection orderConnection;
[AutoAssemble(2)]
public static DbConnection userConnection;
static void Main(string[] args)
{
AsDIContext.Start();
Console.WriteLine(orderConnection.ConnectionString);
Console.WriteLine(userConnection.ConnectionString);
}
}输出结果:
sh
> Server=10.225.3.1; Database=order_system; User ID=sa; Password=*****;
> server=10.225.3.2;user id=root;database=user_system;port=3306;password=****