这是我的情况:我必须暂时从 .NET4 降级到 .NET3.5 一段时间。但是,我希望以后能够尽快迁移回来。
我们使用的 .NET4
中有一些函数没有 3.5
等效项,例如 String.IsNullOrWhitespace
。我可以自己实现此功能,但我不想更新数十个调用以使用另一个静态类(例如 MyString.IsNullOrWhitespace
)。
有没有办法,也许是利用一些创造性的“使用”语法将所有对 String.IsNullOrWhitespace
的引用映射到 MyString.IsNullOrWhitespace?
或者有没有可以执行此操作的 C# 编译器的其他特性或功能?或者我只需要全局搜索并将 "String.IsNullOrWhitespace"
替换为 "MyString.IsNullOrWhitespace"
?谢谢!
最佳答案
我认为您正在寻找扩展方法。
http://msdn.microsoft.com/en-us/library/bb383977.aspx
您根本不需要更改代码。您可以实现自己的 IsNullOrWhiteSpace,它直接附加到字符串类上。如果您引用扩展方法所在的 namespace 。
编辑: 我刚刚意识到 IsNullOrWhiteSpace 是一个静态方法,您不能创建静态扩展方法。但也许你可以这样做:
namespace ExtensionMethods
{
public static class MyExtensions
{
public static bool IsNullOrWhiteSpace(this String str)
{
// ToDo: implement this
}
}
}
将在字符串的实际实例上调用,即:
if(myString.IsNullOrWhiteSpace())
这实际上比您目前正在做的要短一些:
if(string.IsNullOrWhiteSpace(myString))
关于C# - 我可以将一个函数的调用映射到实际调用另一个函数吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7823641/