2
我想通過屬性注入以下服務,如果我嘗試構造函數注入它的作品,但我想做屬性注入,我錯過了什麼?使用autofac的屬性注入3.1.1
public class SodaService
{
public ISoda _s;
//public SodaService(ISoda s)
//{
// _s = s;
//}
public string GetSoda()
{
return _s.SodaName;
}
}
//Soda Class implementing ISoda
public class Soda : ISoda
{
public string SodaName
{
get { return "Default Soda"; }
}
}
public interface ISoda
{
string SodaName { get; }
}
//Main calling program
class Program
{
static void Main(string[] args)
{
var container = GetContainer();
SodaService s=container.Resolve<SodaService>();
Console.Write(s.GetSoda());
Console.Read();
}
private static IContainer GetContainer()
{
var builder = new ContainerBuilder();
builder.RegisterType<Soda>().As<ISoda>();
builder.RegisterType<SodaService>()
.PropertiesAutowired();
var container = builder.Build();
return container;
}
}
編輯: 以上得到解決,我有一個問題....
我怎樣才能讓這樣的工作,我不想使用 S = container.Resolve < ISodaService>(); ,而是當我運行該程序
class Program
{
public static ISodaService s { get; set; }
static void Main(string[] args)
{
SetUpContainer();
//s = container.Resolve<ISodaService>();
Console.Write(s.GetSoda());
Console.Read();
}
private static void SetUpContainer()
{
var builder = new ContainerBuilder();
builder.RegisterType<Soda>().As<ISoda>();
builder.RegisterType<SodaService>().As<ISodaService>().PropertiesAutowired();
builder.Build();
}
}
我錯過了什麼嗎?該物業在哪裏?請注意'_s'是**不是**屬性*,而是公共*字段*。 – Steven
對不起,你是完全正確的,它現在的作品,現在我改變它的財產。 – zsri
@Steven使這個答案 – Alden