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.cs5018亜鉛

理解できない?インスタンスからどのように作業する必要がありますか?または、何をインスタンス化する必要がありますか、それとも別の性質の問題ですか?

ありがとう

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 に答える