我在同一个问题上阅读了其他主题,但不确定我是否应该在我的实例中解决问题。
我有以下内容:
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 Zinc
我不明白?我如何从一个实例工作?或者我必须实例化什么或者是我的另一种性质的问题?感谢
答案 0 :(得分: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(...);