У меня есть существующее приложение, которое я модифицирую для использования Autofac Property Injection. Кажется, независимо от того, какой метод я использую для регистрации своих типов со свойствами, свойства всегда равны нулю, если только они не имеют общедоступных сеттеров. С другими контейнерами IoC (например, Structuremap) можно ограничить внутренний установщик и сделать его доступным с помощью атрибута InternalsVisibleTo
в сборке. Было бы неплохо запретить клиентам изменять назначение.
Возможно ли это с 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
}
}
}
}