gpt4 book ai didi

c# - 我可以将 C# 方法替换为另一个具有相同名称和签名的方法吗?

转载 作者:可可西里 更新时间:2023-11-01 08:54:47 25 4
gpt4 key购买 nike

我有以下情况。一些 .Net 运行时方法不能很好地工作,我需要制定一个解决方法。就像 SqlCommand.ExecuteReader() 有时会返回一个封闭的阅读器对象,我想要这样的代码:

 SqlDataReader MyExecuteReader( this SqlCommand command )
{
var reader = command.ExecuteReader();
if( reader.IsClosed() ) {
throw new ClosedReaderReturnedException();
}
return reader;
}

这会很好,除非我现在需要更改所有调用 ExecuteReader() 的代码,以便它现在调用 MyExecuteReader() 并且这会增加维护难度。

有没有办法以某种方式声明每当我的任何代码想要调用 SqlCommand.ExecuteReader() 时调用 MyExecuteReader()?是否可以有效地用具有完全相同签名和相同名称的另一种方法替换现有方法?

最佳答案

不,不支持你想要的。如果类不是密封的,并且方法不是静态的,您可以在不同的命名空间中继承同名类并更改using,并重写该方法。但这是一个有限的解决方案。

您最好的选择是使用不同的名称实现标准扩展方法,并替换所有用法。这在大型代码库中似乎需要大量工作,并且可能容易出现人为错误——有人向原始方法添加新调用。但是,一次性成本被以下事实所抵消:您的代码现在明确表示您已经对行为进行了修改;您可以通过编写自己的自定义 FxCop 规则(或您定期运行的任何静态分析工具)来防止人为错误。

关于c# - 我可以将 C# 方法替换为另一个具有相同名称和签名的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14229444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com