2017-08-28 1 views
0

HALLO Ich erstelle WCF-Dienst, für den ich drei (Fragen, Antworten und Kategorien) -Klassen durch Erstellen eines Klassenbibliothek-Projekts erstellt und verwendet ihre DLL zum Erstellen des Dienstes wie in der folgenden CodeWCF mit gleichen externen Fehler wirft Fehler

public Answers InsertAnswer(Answers answer) 
{ 
    try 
    { 
     answer_ = new Answers(); 
     cs = ConfigurationManager.ConnectionStrings[csName].ConnectionString; 
     using (con = new SqlConnection(cs)) 
     { 
      cmd = new SqlCommand("InsertAnswer", con); 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.Parameters.AddWithValue("@answer", answer.Answer); 
      cmd.Parameters.AddWithValue("@questionId", answer.QuestionId); 
      con.Open(); 
      cmd.ExecuteNonQuery(); 
      answer_ = GetAnswer(answer); 
     } 
    } 
    catch (Exception ex) 
    { 

    } 
    finally 
    { 
     con.Close(); 
     con.Dispose(); 
     cmd.Dispose(); 
    } 
    return answer_; 
} 

answer_ ist globales Objekt der Klasse Antworten, die unter

ist
using QuestionsAnswers; 

Namespace Jetzt bin ich mit dem gleichen Namensraum in meinem Client und verwenden den gleichen Service für die Methode aufrufe, aber ich unten Fehler gibt, ist die Code auf meiner Kundenseite

public void InserQuestionAnswer(QA qaParam) 
{ 
    try 
    { 
     Answers answer = new Answers(); 
     answer.QuestionId = 1; 
     answer.Answer = qaParam.Answer.ToString(); 
     QuestionsAnswersService.QuestionAnswerServiceClient questionAnswerService = new QuestionsAnswersService.QuestionAnswerServiceClient("BasicHttpBinding_IQuestionAnswerService"); 
     questionAnswerService.InsertAnswer(answer); 
    } 
    catch (Exception ex) 
    { 

    } 
} 

ich die gleichen Bezugs bin mit

using QuestionsAnswers; 

ich die folgenden Fehler bekommen

Severity Code Description Project File Line Suppression State 
Error CS0120 An object reference is required for the non-static field, 
method, or property 'QAaspx.InserQuestionAnswer(QA)' QASamapleUI E:\Rohit 
Gupta\PracticeProjects\WebApp\QASamapleUI\QASamapleUI\QAaspx.aspx.cs 25 
Active 

Kann jemand bitte helfen Sie mir

+0

Possible Duplikat [CS0120: Eine Objektreferenz für das nicht-statische Feld, Methode erforderlich ist, oder eine Eigenschaft 'foo'] (https://stackoverflow.com/questions/498400/cs0120-an-object-reference -ist-erforderlich-für-die-nicht-statische-Feld-Methode-oder-Prop) –

Antwort

0

Du diese Nachricht, weil das Verfahren bekommen Du rufst mit QAaspx.InserQuestionAnswer(QA) ist nicht statisch, und offensichtlich hast du keinen Objektverweis auf i ts-Klasse, wenn Sie es anrufen.

Sie können dies lösen, indem Sie eine Instanz dieser Klasse erstellen und die Methode aufrufen. Sie zeigen nicht, in welcher Klasse es in Ihrem Code ist, aber nehmen wir an, die Klasse ist Foo. Dann könnten Sie dies tun:

Foo myFoo = new Foo(); 
myFoo.InserQuestionAnswer(QA); 

Alternativ kann, wenn das Verfahren nicht einen Verweis auf andere Eigenschaften seiner Klasse nicht benötigen, können Sie es einfach statisch machen.

public static void InserQuestionAnswer(QA qaParam) {}