C# .NET Framework源代码中缺少方法

C# .NET Framework源代码中缺少方法,c#,.net,C#,.net,今天早上我一直在浏览.NET Framework源代码,因为我只是想检查Dipose()在数据库连接上的行为 但是,查看SqlConnection的.NET Framework源代码(+我也下载了它),在SqlConnection中没有定义任何方法Dispose() 但是,使用dotPeek,我可以在SqlConnection上看到Dispose()的实现 我缺少什么?似乎Dispose()方法在SqlConnection中没有特定的实现,只是继承了 您可以检查以确认这一点。似乎Dispose(

今天早上我一直在浏览.NET Framework源代码,因为我只是想检查
Dipose()
在数据库连接上的行为

但是,查看SqlConnection的.NET Framework源代码(+我也下载了它),在
SqlConnection
中没有定义任何方法
Dispose()

但是,使用dotPeek,我可以在SqlConnection上看到
Dispose()
的实现


我缺少什么?

似乎
Dispose()
方法在
SqlConnection
中没有特定的实现,只是继承了


您可以检查以确认这一点。

似乎
Dispose()
方法在
SqlConnection
中没有特定的实现,只是从继承


您可以检查以确认这一点。

只有实现IDisposable接口的类才能具有Dispose(除非您自己编写)方法

SqlConnection类具有Dispose方法,因为它是inherit的组件

资料来源:


您可以找到有关IDisposable接口的更多信息

只有实现IDisposable接口的类才能使用Dispose(除非您自己编写)方法

SqlConnection类具有Dispose方法,因为它是inherit的组件

资料来源:


您可以找到有关IDisposable接口的更多信息

您真正缺少的是将
SqlConnection
定义为
部分类的接口。这意味着其他文件可以定义成员函数,包括
Dispose()
。它是定义
Dispose()
成员函数的其他文件之一


看一看。这在名称空间
名称空间
中定义了一个类
CONNECTIONOBJECTNAME
。这些将在构建时被正确的类名和命名空间名替换,这允许多个
DbConnection
-派生类共享
Dispose()
实现。

您真正缺少的是将
SqlConnection
定义为
部分类。这意味着其他文件可以定义成员函数,包括
Dispose()
。它是定义
Dispose()
成员函数的其他文件之一


看一看。这在名称空间
名称空间
中定义了一个类
CONNECTIONOBJECTNAME
。这些将在构建时被正确的类名和命名空间名替换,这允许多个
DbConnection
派生类共享
Dispose()
实现。

在哪里可以看到在Dispose方法中不执行任何操作的SqlConnection?很难猜到您在看什么,但它不可能是Dispose()方法。该类不重新实现IDisposable,它依赖于从基类继承的一次性模式。相反请记住,System.Data的引用源不完整,部分引用源是用C++/CLI编写的,而C++/CLI不包括在内。@Steve您在该文件中看到了
Dispose()
的定义在哪里?它只包含一个
DisposeMe()
helper方法,但不包含
Dispose()
方法。(它确实包含
SqlDebugContext.Dispose()
,但不包含
SqlConnection.Dispose()
)在哪里可以看到在Dispose方法中不执行任何操作的SqlConnection?很难猜到您在看什么,但它不可能是Dispose()方法。该类不重新实现IDisposable,它依赖于从基类继承的一次性模式。相反请记住,System.Data的引用源不完整,部分引用源是用C++/CLI编写的,而C++/CLI不包括在内。@Steve您在该文件中看到了
Dispose()
的定义在哪里?它只包含一个
DisposeMe()
helper方法,但不包含
Dispose()
方法。(它确实包含
SqlDebugContext.Dispose()
,但不包含
SqlConnection.Dispose()
)谢谢。我发现它是局部的,但as找不到另一个定义,假设没有。没有考虑在构建时生成它们的选项。谢谢。我发现它是局部的,但as找不到另一个定义,假设没有。没有考虑在构建时生成它们的选项。