我有一个现有的应用程序,我正在修改它以使用 Autofac 属性注入。似乎无论我使用哪种方法向属性注册我的类型,属性始终为 null,除非它们具有公共设置器。InternalsVisibleTo
使用其他 IoC 容器(例如 Structuremap),可以将 setter 设置为内部范围,并使用程序集上的属性使其可用。这似乎很好地限制了客户修改分配。
Autofac可以做到这一点吗?或者在使用属性注入以确保分配安全时是否有另一种方法?
我已经尝试使用反射PropertiesAutoWired()
以及.WithParameter()
从我的 WebApi Global.asax 解析 - 指定要设置的特定参数作为内部设置器没有成功。
[assembly: InternalsVisibleTo("MyWebAPI.dll")]
[assembly: InternalsVisibleTo("Autofac.dll")]
[assembly: InternalsVisibleTo("Autofac.Configuration.dll")]
namespace My.Namespace
{
public class BaseContext
{
public MyPublicClass _dbHelper { get; internal set; }
public BaseContext()
{
}
protected string DbConnectionString
{
get
{
return _dbHelper.DbConn; //<-Always null unless setter is public
}
}
}
}