0

我通读了关于同一问题的其他主题,但不确定我是否应该解决一个问题,在我的例子中。

我有以下内容:

public interface ITrainingService : IDependency
{
   void ResetModule(int id, int userScormModuleId, int currentUser);
}

public class TrainingService : ITrainingService
{
 public void ResetModule(int id, int userScormModuleId, int currentUser)
 {
   Zinc.Repositories.Scorm.IScormModuleRepository.ResetModule(id, userScormModuleId, currentUser);  //i get the error here
 }
}

ResetModule 包含在:

public class ScormModuleRepository : Repository<ScormModule>, IScormModuleRepository
{
   public void ResetModule(int id, int userScormModuleId, int currentUser)
   {
     using (SqlConnection conn = new SqlConnection(ZincModelContainer.CONNECTIONSTRING))
     {
         using (SqlCommand cmd = conn.CreateCommand())
         {
           conn.Open();
           cmd.CommandType = System.Data.CommandType.StoredProcedure;
           cmd.CommandText = "[Zinc].[ResetUserScormModuleData]";

           SqlParameter param = new SqlParameter("@userId", System.Data.SqlDbType.Int);
           param.Value = id;
           cmd.Parameters.Add(param);

           SqlParameter param2 = new SqlParameter("@userScormModuleId", System.Data.SqlDbType.Int);
           param2.Value = userScormModuleId;
           cmd.Parameters.Add(param2);

           SqlParameter param3 = new SqlParameter("@currentUser", System.Data.SqlDbType.Int);
           param3.Value = currentUser;
           cmd.Parameters.Add(param3);

           cmd.ExecuteNonQuery();
        }
     }
  }
}
 public interface IScormModuleRepository : IRepository<ScormModule>
 {
   void ResetModule(int id, int userScormModuleId, int currentUser);
 }

整个错误:错误 1 ​​非静态字段、方法或属性需要对象引用 'Zinc.Repositories.Scorm.IScormModuleRepository.ResetModule(int, int, int)' C:\TFSPreview\Zinc\Project\ServiceImplementations \TrainingService.cs 501 8 锌

我不明白?我必须如何从一个实例工作?或者我必须实例化什么或者我的问题是另一种性质?

谢谢

4

1 回答 1

1

您需要一个实现IScormModuleRepository. 使用您的代码,应该调用什么方法?IScormModuleRepository是一个接口,它甚至不包含您尝试调用的方法的实现......

你需要这样的东西:

public class TrainingService : ITrainingService
{
    IScormModuleRepository _repository;

    public TrainingService(IScormModuleRepository repository)
    {
        _repository = repository;
    }

    public void ResetModule(int id, int userScormModuleId, int currentUser)
    {
        _repository.ResetModule(id, userScormModuleId, currentUser);
    }
}

你现在可以TrainingService像这样使用你的:

var repository = new ScormModuleRepository(...);
var trainingService = new TrainingService(repository);
trainingService.ResetModule(...);
于 2012-11-23T12:24:58.980 回答