2016-07-21 34 views
-1

Ich schreibe eine Kern-API, die vom Client-Entwickler verwendet wird.So zeigen Sie nicht implementierte Methoden in der API an, ohne eine Ausnahme auszulösen und die Kompilierung zu verhindern

Es gibt einige Methoden, die noch nicht entwickelt sind, aber ich brauche sie in der API zu sein, damit der Entwickler sie in der Intellisense sehen kann.

Neben der API-Dokumentation, die ich dem Entwickler zur Verfügung stelle, muss er während der Entwicklung wissen, dass eine Methode noch nicht implementiert ist, aber existiert.

Gibt es eine Möglichkeit, den Entwickler zu informieren, dass die Methode noch nicht implementiert ist, ohne NotImplementedException zu werfen, und wenn er versuchen wird, die Methode zu verwenden, die nicht kompiliert wird?

Zum Beispiel:

public class API 
{ 
    public void PrintToPDF() 
    { 
      // do not throw NotImplementedException 
    } 
} 


public class Client 
{ 
    public void Print() 
    { 
      API api = new API(); 
      api.PrintToPDF();  // shouldn't compiled but can be see in intellisense. It can show a tooltip that it is in being developed. 
    } 
} 

Antwort

2

Verwenden Sie das veraltete Attribut, es kann sowohl eine Warnung als auch einen Fehler erzeugen, wenn Sie es definieren.

using System; 
using System.Reflection; 

public class Example 
{ 
    // Mark OldProperty As Obsolete. 
    [ObsoleteAttribute("This property is for future use", false)] 
    public static string OldProperty 
    { get { return "The old property value."; } } 

    public static string NewProperty 
    { get { return "The new property value."; } } 

    // Mark CallOldMethod As Obsolete. 
    [ObsoleteAttribute("This method is for future use", true)] 
    public static string CallOldMethod() 
    { 
     return "You have called CallOldMethod."; 
    } 

    public static string CallNewMethod() 
    { 
     return "You have called CallNewMethod."; 
    } 

    public static void Main() 
    {     
     Console.WriteLine(OldProperty); 
     Console.WriteLine(); 
     Console.WriteLine(CallOldMethod()); 
    } 
} 
// The attempt to compile this example produces output like the following output: 
// Example.cs(31,25): error CS0619: 'Example.CallOldMethod()' is obsolete: 
//   'This method is for future use' 
// Example.cs(29,25): warning CS0618: 'Example.OldProperty' is obsolete: 
//   'This property is for future use' 

Sie können auch ein eigenes Attribut erstellen.

[Obsolete("Reserved for future use", true)] 
public class ReservedForFutureUse : System.Attribute 
{ 

} 
+0

Obwohl es ein veraltetes Attribut ist, das Methoden kennzeichnen soll, die nicht mehr verwendet werden, löst es mein Problem. Vielen Dank – ehh

2

Sie können die veraltete Attribut verwenden:

public class API 
{ 
    [Obsolete("This isn't yet implemented")] 
    public void PrintToPDF() 
    { 
     // do not throw NotImplementedException 
    } 
} 

Es wird kein Fehler bei der Kompilierung erzeugen, aber es wird eine Warnung generiert:

1>Example.cs(31,17,31,33): warning CS0618: 'API.PrintToPDF()' is obsolete: 'This isn't yet implemented' 
+0

Warnung ist auch eine gute Option so upvoted aber meine Frage war, Kompilierung zu verhindern. Danke – ehh