【发布时间】:2017-11-02 20:26:12
【问题描述】:
我有一个现有的应用程序,我正在修改它以使用 Autofac 属性注入。似乎无论我使用哪种方法向属性注册我的类型,属性始终为空,除非它们具有公共设置器。使用其他 IoC 容器(例如 Structuremap),可以在内部设置 setter 并使用程序集上的 InternalsVisibleTo 属性使其可用。这似乎很好地限制了客户修改分配。
Autofac 可以做到这一点吗?或者在使用属性注入来保证分配安全时是否有另一种方法?
我尝试使用反射与 PropertiesAutoWired() 以及从我的 WebApi Global.asax 解析 .WithParameter() - 指定要设置的特定参数作为内部设置器没有成功。
[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
}
}
}
}
【问题讨论】:
标签: properties autofac internal