2009-07-27 3 views
0

dans ASP.NET 3.5 Je reçois l'erreur ci-dessus lorsque je tente de compiler le projet de service Web d'une application Silverlighterreur ASP.NET compilateur doit déclarer un corps parce qu'il est pas marqué abstrait

Le générateur de ligne de code l'erreur est en dessous de 'Liste publique GetAccounts();'

namespace BegSilver.Web 
{ 
    [ServiceContract(Namespace = "")] 
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
    public class Service1 
    { 
    [OperationContract] 
    public List<Accounts> GetAccounts(); 

    // Add more operations here and mark them with [OperationContract] 
    } 
} 

C'est la méthode, il fait référence:

public class Accounts 
    { 
    private Int32 acpk {get; set;} 
    private Decimal acctnumber { get; set; } 
    private String name { get; set; } 
    private String type { get; set; } 


    public static List<Accounts> GetAccounts() 
    { 
     List<Accounts> a = new List<Accounts>(); 

     a.Add(
     new Accounts() 
     { 
      acpk = 1, 
      acctnumber = 332.3m, 
      name = "Test", 
      type = "CASH" 
     }); 

    return a; 
    } 

Je l'ai vu plusieurs explications et essayé les corrections proposées, mais aucun d'entre eux ont travaillé.

Toute aide serait appréciée. Un grand merci, Mike Thomas

Répondre

2

Vous devez soit:

public List<Accounts> GetAccounts() 
{ 
    //just saw what you were doing above 
    return Accounts.GetAccounts(); 
} 

ou si vous prévoyez sur le remplacement de la fonctionnalité dans une sous-classe:

public abstract List<Accounts> GetAccounts(); 

Fondamentalement, vous ne pouvez » t avoir une méthode vide sans que le compilateur ait quelque chose à compiler ou sans que le compilateur sache que vous allez implémenter la méthode plus tard.

1

Vous avez deux choses mélangées, une interface et le service actuel. L'interface définit le contrat de service et le service réel implémente ce contrat. Vous devez lire comment implémenter un contrat de service (c'est-à-dire définir une interface), qui définit les points de terminaison (c'est-à-dire les méthodes disponibles) pour votre service, puis comment implémenter ce contrat.

Voir ces 2 pages sur MSDN:

Designing Service Contracts

Implementing Service Contracts

examle pris de la 2ème page:

// Define the IMath contract. 
[ServiceContract] 
public interface IMath 
{ 
    [OperationContract] 
    double Add(double A, double B); 

    [OperationContract] 
    double Multiply (double A, double B); 
} 
// Implement the IMath contract in the MathService class. 
public class MathService : IMath 
{ 
    public double Add (double A, double B) { return A + B; } 
    public double Multiply (double A, double B) { return A * B; } 
} 

ou, définissant directement sur la classe de service:

[ServiceContract]class MathService 
{ 
    [OperationContract] 
    public double Add(double A, double B) { return A + B; } 
    // notice the body of the method is filled in between the curly braces 
    [OperationContract] 
    public double Multiply (double A, double B) { return A * B; } 
} 
Questions connexes