如何在API中显示未实现的方法,不抛出异常并阻止编译

本文关键字:抛出异常 编译 方法 API 显示 实现 | 更新日期: 2023-09-27 17:57:53

我正在编写一个核心API,供客户端开发人员使用。

有些方法还没有开发出来,但我需要它们在API中,这样开发人员就可以从智能的角度看到它们。

除了我提供给开发人员的API文档外,我还需要他在开发过程中知道一个方法尚未实现,但它已经存在。

有没有一种方法可以在不抛出NotImplementedException的情况下通知开发人员该方法尚未实现,如果他将尝试使用该方法,则不会编译该方法?

例如:

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. 
     }
}

如何在API中显示未实现的方法,不抛出异常并阻止编译

使用过时的属性,它可以在定义时生成警告或错误。

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'

您也可以创建自己的属性。

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

您可以使用过时的属性:

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

它不会在编译时生成错误,但会生成警告:

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