ServiceStack - 注入属性

ServiceStack - injecting Properties

我对 Funq 容器感到很困惑。

我有以下内容:

public interface IConnectionString
{
     string ConnectionString { get; set; }

}

public class FoundationConnection : IConnectionString
{
    public FoundationConnection(string connectionString)
    {
        ConnectionString = connectionString;
    }
    public string ConnectionString { get; set; }
}

现在在我的 AppHost 中,我想注册

   container.Register<IConnectionString>(c=> new FoundationConnection(AppSettings.Get(
                        "FoundationConnectionString", "").MapHostAbsolutePath()));

在我的 ServiceInterface 中,我想以某种方式调用这个注入的方法:

 public class ServiceInterface : Service
 {
  public IConnectionString foundationConnection { get; set; }

     public object Any(SomeRequest request)
     {

         string injectedProperty = foundationConnection.ConnectionString;
      }
  }
}

问题是 foundationConnection 为空且从未注入。

我希望这是有道理的?

就我个人而言,我会使用 AppSettings 访问配置设置,这样您就可以从 number of different and cascading configuration sources.

获取配置

但我已经使用这些类型对此进行了测试:

public interface IConnectionString
{
    string ConnectionString { get; }
}

class FoundationConnectionString : IConnectionString
{
    public FoundationConnectionString(string connectionString)
    {
        ConnectionString = connectionString;
    }

    public string ConnectionString { get; set; }
}

在 AppHost.Configure():

中注册后它可以正常工作
public override void Configure(Container container)
{
    container.Register<IConnectionString>(c => 
        new FoundationConnectionString("My Connection"));
}

并从测试服务访问它:

[Route("/test")]
public class Test : IReturn<string> { }

public class TestService : Service
{
    public IConnectionString Config { get; set; }

    public object Any(Test request)
    {
        return Config.ConnectionString;
    }
}

其中 returns "My Connection" 调用时。