尝试使用(abstract?)类时显示Not Implemented消息

时间:2017-10-06 15:51:55

标签: c#

当有人试图在我的SDK中创建某些类型的新类时,我希望显示一条消息。目前,我拥有这些评论的所有类属性:

/// <summary>
/// This class and its use is not implemented in (my) SDK
/// </summary>

只有两种方法,SDK的用户不需要访问它们

但这只会在您对类的属性使用Intellisense时显示。 如果我将类设置为抽象,那么在尝试创建新实例时我会得到这个:

Cannot create an instance of the abstract class or interface 'MyClass1'

是否有可能以任何方式让开发人员知道该类无法实例化,因为使用该类的功能并未在SDK中实现? 类似于[NotImplemented]属性的东西,也许是??

2 个答案:

答案 0 :(得分:0)

表明这一点的标准方法是让方法抛出NotImplementedException。不幸的是,这意味着只有在运行时时才能明白该功能未实现。

但是,如果您使用在编译时抛出NotImplementedException的方法,则流行的扩展ReSharper会向您发出警告。

您在构建/设计时间可以做的最好的事情是使用ObsoleteAttribute。您可以给它一个自定义消息,并使标记的方法/类使用错误:

[Obsolete("This method is not implemented!", true)
public void MyFunc()
{
     throw new NotImplementedException();
}

这会引发错误CS0619:'MyClass.MyFunc()' is obsolete: 'This method is not implemented!'

答案 1 :(得分:0)

如果该类不适合外部使用,您可以将该类标记为内部,并且sdk的用户将无法访问该类。如果用户不应该看到类的方法,我会考虑将它们标记为私有。