发表日期:2020-01-26 17:11:36文章编辑:浏览次数:125 标签:公司新闻
我觉得只需要对命名空间进行管理就好
比如 MyLib.Extensions.Urls空间里面的扩展方法 扩展到string也无所谓
因为你不是工作在密集的url 与字符串之间的上下文中 你压根不会using这个命名空间。
前面的兄弟说这样是个治不了懒的办法。
我觉得只需要我们有一些约束就好了
比如我要扩展的string, 无论在哪个命名空间 我们都把这个静态累起名叫做 public static class StringExtenstions
这样我们要扩展String的时候 只需要打
StringEntensions 然后按 alt +shift +f10
vs就会弹出所有可能的命名空间 让你选择。
不过这样要先防止两个命名空间有完全一样签名的函数。这是一个很严厉的规定哦,
相当于"语焉不明类型不可以做静态函数的第一个参数"一样严厉。
既然静态函数一般是可以根据其所在静态类来进行管理,"语焉不明类型不可以做静态函数的第一个参数"这个规则可以不必执行,
“不建议对语焉不明的类型进行特定领域的的扩展。”这个严厉规定应该也可以有办法处理吧。Ivony的目的应该还是要尽可能地避免不必要的污染,也就是说这个我写了一个扩展方法的库,就算有一天,我从做互联网的A公司离职了,到了一个做ERP的B公司,我的这些扩展类库一样可以用。
我觉得这个有两个解决办法:
第一,我可以针对基本对象做一层简单的封装,假设说.NET Framework没有Url这个类,那我就写一个
class Url{private string url}
然后这样一样可以避免Helper的泛滥,然后也一样可以实现中缀表达式的目的。
第二,就是说用命名空间来就觉问题,就算我对String做扩展方法,我一样可以把他放到UrlExtension里,这样,只需要引入合适的命名空间,来达到目的。