在ServiceStack中设置非只读属性

时间:2013-04-01 15:06:28

标签: servicestack

我试图在服务构造函数中设置一个公共属性,它在Any()方法中给出了null引用异常。如果我将它改为只读字段,它工作正常。但是我想通过实例化服务来设置这个属性,任何人都可以提供有关如何实现这一点的见解。

public class CustomerService : Service
{
   private readonly IDbConnection _dbConnection;
  public ServiceCommand SelectCommand {get;set;}
  public CustomerService(IDBConnection dbConnection)
  {
         SelectCommand = new ServiceCommand();
         _dbConnection = dbConnection;            
  }

  public Customer Any()
  {
          //selectcommand is null here
  }
}

1 个答案:

答案 0 :(得分:1)

我已在this earlier question中部分回答了此问题。

所有公共财产都由IOC注入

SelectCommand属性为null的原因是因为它是公共属性。尝试通过已注册的依赖项解析所有服务公共属性,并且因为您没有任何类型为ServiceCommand的已注册依赖项,所以它将被覆盖为null。如果这是在你的构造函数中定义的,那么它会抛出一个运行时异常,因为它只是一个属性,它的设置为null

如果您将SelectCommand的可见性更改为非公开,例如保护,私人,内部或静态不会被国际奥委会注入。