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" 调用时。
我对 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" 调用时。