【问题标题】:ServiceStack - injecting PropertiesServiceStack - 注入属性
【发布时间】:2023-03-21 13:47:02
【问题描述】:

我对 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 为空且从未注入。

我希望这是有道理的?

【问题讨论】:

    标签: servicestack inversion-of-control


    【解决方案1】:

    我个人会使用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;
        }
    }
    

    调用时返回“我的连接”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-29
      • 2010-12-27
      • 1970-01-01
      • 2011-12-01
      • 2017-05-28
      • 1970-01-01
      • 2012-04-23
      • 2017-01-26
      相关资源
      最近更新 更多