这个问题似乎已经死了,所以我决定提供赏金。
我最感兴趣的是我在下面的 ETA1 中的场景是否可行并被使用。如果不是,那么一个很好的解释为什么不是一个很好的答案。另一个很好的答案是另一种选择(但不包括 internalsvisibleto 属性)。
最好的答案是,是的,它是可行的,每个人都这样做并且客户喜欢它!
ETA2:我想我已经想到了一个很好的解决方案。我为客户提供了一个可分发的版本,它与他们的版本一样功能,但未经许可,并且使用属性隐藏了类和成员。我可以在每个重要成员上使用编译器指令来做到这一点,但我想知道是否有某种全局方法来隐藏类的所有成员?
一个简化的场景:-
我有一个以某种方式扩展控件的类,我想在两个许可证下出售我的类;
(1) 标准 - 客户获得 x 个使用我的类但无法实例化该类(其内部)的控件。
(2) 开发人员 - 与标准相同,只是他们可以创建自己的控件来使用我的类。
我的问题是,当开发人员客户来销售他们的控件时,他们会情不自禁地把我的课程暴露给他们所有的客户。
---忽略这个唯一的解决办法,在我混乱的脑海里,就是让开发人员以某种方式将我的程序集集成到他们的程序中,这样我就可以将构造函数保持在内部。或者,使用内部可见的属性。/ 忽略这个 - -
我敢肯定这里有人遇到过同样的情况,我们将不胜感激。
ETA1:我在这里大声思考,但是,我可以有一个客户可以添加的允许调用程序集名称的列表。当他们发布他们的产品时,他们的客户的程序集不会在列表中,因此他们将无法实例化某些类。(该列表显然可以散列)。