C# FXCop:";拥有一次性字段的类型应该是一次性的;

C# FXCop:";拥有一次性字段的类型应该是一次性的;,c#,fxcop,C#,Fxcop,我开始和FXCop在我的一些集会上乱搞,我注意到一些有趣的事情,我正试图把我的头绕过去 “声明一次性成员的类型 还应实现IDisposable.If 该类型不拥有任何非托管 资源,不实施 它的终结器。” 我有自己的类,其中包含一些控件,这些控件依次继承自System.Web.UI.WebControl.Button。它不是在抱怨我继承的按钮,而是包装它们的类 这里的影响或危险是什么?如果您的类包含IDisposable类型,但您的类不可IDisposable,那么当不再需要类的实例时,您的类中的

我开始和FXCop在我的一些集会上乱搞,我注意到一些有趣的事情,我正试图把我的头绕过去

“声明一次性成员的类型 还应实现IDisposable.If 该类型不拥有任何非托管 资源,不实施 它的终结器。”

我有自己的类,其中包含一些控件,这些控件依次继承自System.Web.UI.WebControl.Button。它不是在抱怨我继承的按钮,而是包装它们的类


这里的影响或危险是什么?

如果您的类包含IDisposable类型,但您的类不可IDisposable,那么当不再需要类的实例时,您的类中的IDisposable类型可能未及时释放/释放。
一旦不再需要Dispoble类型,就应该立即释放它们,以便释放资源。如果您不这样做,您将不得不等到GC启动,然后资源也将被释放。

如果您的类包含IDisposable类型,但您的类不可IDisposable,那么当不再需要类的实例时,您的类中的IDisposable类型可能不会被及时释放/释放。
一旦不再需要Dispoble类型,就应该立即释放它们,以便释放资源。如果不这样做,您将不得不等待GC启动,然后资源也将被释放。

正如您所知,当您使用完一次性对象时,您应该调用它的
Dispose
方法

当您从这些控件继承时,仍然可以调用
Dispose
方法。但是如果您制作了一个包装器,那么包装器类的用户应该能够调用
Dispose

public void Dispose() {
    button.Dispose();
    // any other thing that is disposable
}

如您所知,当您使用完一次性对象时,应该调用其
Dispose
方法

当您从这些控件继承时,仍然可以调用
Dispose
方法。但是如果您制作了一个包装器,那么包装器类的用户应该能够调用
Dispose

public void Dispose() {
    button.Dispose();
    // any other thing that is disposable
}

包含按钮的类的性质是什么

通常,我只希望一个复合控件类有其他控件作为成员。此类类通常会直接或间接地从System.Web.UI.CompositeControl或System.Web.UI.WebControl继承,您作为成员的控件应添加到控件集合中

这样做将确保它们得到正确处理,并应消除FxCop警告


如果这没有帮助,请发布有关类的更多详细信息。

包含按钮的类的性质是什么

通常,我只希望一个复合控件类有其他控件作为成员。此类类通常会直接或间接地从System.Web.UI.CompositeControl或System.Web.UI.WebControl继承,您作为成员的控件应添加到控件集合中

这样做将确保它们得到正确处理,并应消除FxCop警告

如果这样做没有帮助的话,请发布更多有关该类的详细信息