有哪些类型的限制可以阻止我在.NET中修改内置类型?

Joa*_*nge 0 .net c#

如果有类型需要修改以满足项目要求,那么有哪些类型的限制?

通过修改我的意思:

  1. 找到您感兴趣的类型最接近您需要的类型.
  2. 用反射器拆卸它.
  3. 根据您自己的规范进行修改.
  4. 在应用程序中使用新类型(在另一个命名空间中).
  5. 将您的应用作为商业或开源发布.

这样做完全没问题吗?

Rex*_*x M 7

那不行.您使用Reflector提取的代码的版权归Microsoft所有,某些部分甚至可能获得专利.无论哪种方式,您都无法在没有明确许可的情况下将其他人的代码重新分发为您自己的代码.

可以做的是从头开始重新创建自己的实现.描述类,对象或模式的作用不受版权保护(尽管它可能是可行的,但通常不会获得专利).例如,您可以描述字符串类应该做什么,并从头开始编写自己的字符串类.

除了法律意义之外,我无法想象从技术角度来看这是一个好主意的场景.如果你退回并根据你需要完成的原始问题重新构建问题,你可能会想出一个更好的解决方案.或者更好的是,在Stackoverflow上发布这个问题并获得更多的大脑.


Jon*_*eet 7

不,非常肯定不是.即使您可以这样做,也会违反.NET框架许可证.你是否真的在合法的热水中可能取决于你的国家,但你肯定想咨询律师.

如果您打算将功能复制到类型中,那么您可能不得不引入其他内部类型和其他可能的奇怪内容.您想要复制多少Microsoft代码?如果原始类型在新版本中更新等,那么你就会遇到问题......

只是不要这样做 - 问一个单独的问题,如何解决你遇到的任何缺陷,但不要开始采用框架代码并将修改后的版本放入你自己的代码库.


编辑:我原本以为琼正在谈论修改代码,重建,然后替换框架中的BCL类.以下是我对这个想法的看法......

出于技术原因,这是一个非常糟糕的主意:

  • 您将无法再次正确签署程序集,这意味着您最多只能在完全信任下运行应用程序(我不认为检查程序集签名).
  • 你会如何部署你的新类型?您可能不得不将其部署在真实的"顶部"上,这会影响使用.NET的其他任何人.

BCL类型不是这样设计的.

  • @Downvoter:由于有关更换框架内的类型的问题,是不是还要投票?如果是这样,那是因为误读了这个问题......我已将其编辑出来了.如果没有,请解释我出错的地方. (2认同)

Gre*_*ech 5

使用Reflector查看BCL源代码在技术上已经破坏了许可协议.我知道每个人(包括我自己)都做到了,但你已经在第2点处于不稳定的状态.

您可以通过查看原始源代码来解决此问题,但这是根据Microsoft Reference Source许可证授予的,该许可证不允许使用修改后的源代码.

所以不,这不好,我很害怕.