- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
谁能解释以下行为?
总而言之,如果您在 Visual Studio 2008 中创建多个符合 CLS 的库并让它们共享一个公共(public)命名空间根,则引用另一个库的库将需要引用那个库的引用,即使它不使用它们。
这很难用一句话来解释,但这里有重现该行为的步骤(请密切注意命名空间):
创建一个名为 LibraryA 的库并向该库添加一个类:
namespace Ploeh
{
public abstract class Class1InLibraryA
{
}
}
通过将 [assembly: CLSCompliant(true)]
添加到 AssemblyInfo.cs,确保该库符合 CLS。
创建另一个名为 LibraryB 的库并引用 LibraryA。将以下类添加到 LibraryB:
namespace Ploeh.Samples
{
public class Class1InLibraryB : Class1InLibraryA
{
}
}
和
namespace Ploeh.Samples
{
public abstract class Class2InLibraryB
{
}
}
确保 LibraryB 也符合 CLS。
请注意,Class1InLibraryB 派生自 LibraryA 中的类型,而 Class2InLibraryB 则不是。
现在创建名为 LibraryC 的第三个库并引用 LibraryB(但不是 LibraryA)。添加以下类:
namespace Ploeh.Samples.LibraryC
{
public class Class1InLibraryC : Class2InLibraryB
{
}
}
这应该仍然可以编译。请注意,Class1InLibraryC 派生自 LibraryB 中的类,不使用 LibraryA 中的任何类型。
另请注意,Class1InLibraryC 是在一个命名空间中定义的,该命名空间是 LibraryB 中定义的命名空间层次结构的一部分。
到目前为止,LibraryC 没有对 LibraryA 的引用,并且由于它没有使用 LibraryA 中的类型,因此解决方案可以编译。
现在也让 LibraryC CLS 兼容。突然,解决方案不再编译,给你这个错误信息:
The type 'Ploeh.Class1InLibraryA' is defined in an assembly that is not referenced. You must add a reference to assembly 'Ploeh, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
您可以通过以下方式之一使解决方案再次编译:
命名空间层次结构和 CLS 合规性之间似乎存在一些奇怪的相互作用。
可以通过选择上面列表中的一个选项来解决这个问题,但是谁能解释这种行为背后的原因?
最佳答案
我查看了 CLS 的官方文档 ( http://msdn.microsoft.com/en-us/netframework/aa569283.aspx ),但在我找到一个简单的答案之前我的脑袋爆炸了。
但我认为基础是编译器为了验证 LibraryC 是否符合 CLS,需要调查与 LibraryA 可能存在的命名冲突。
编译器必须验证所有“在定义程序集之外可访问或可见的类型部分”(CLS 规则 1)。
由于公共(public)类 Class1InLibraryC 继承了 Class2InLibraryB,它还必须针对 LibraryA 验证 CLS 合规性,特别是因为“Ploeh.*”现在在 CLS 规则 5 的“范围内”“在符合 CLS 的范围内引入的所有名称应独立于种类”。
更改 Class1InLibraryB 或 Class1InLibraryC 的命名空间以使它们变得不同似乎可以说服编译器不再有名称冲突的机会。
如果您选择选项 (2),添加引用并编译,您将看到引用实际上并未标记在生成的程序集元数据中,因此这只是一个编译/验证时依赖性。
关于.net - CLSCompliant(true) 拖入未使用的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24700730/
我是 iOS 新手,我不知道该怎么做,我想实现类似个人资料编辑动画的 Tinder。 例如, 我可以将图像拖到其他 UIImageView 或 UICollectionView 中,并将 Collec
我在项目中使用gridster.net,但遇到了问题。 我试图让小部件仅在单击后按住鼠标一秒钟后才开始拖动。我正在使用下一个代码: $(".gridster .gs-w").on('mousedown
我想用 LibGDX 中的鼠标拖动一个Actor。我的代码: // overrides in the ClickListener @Override public bo
为什么当我将我的 gif 拖到单元格中时表格会变形?我该如何解决?当我将 gif 拖到单元格中时,我希望表格(和每个单元格)保持原来的大小。 这是我的情况的一个 jsfiddle: http://js
当设备转向横向时,一些控件离开 viewController,我无法将其拖到 viewController。 最佳答案 就像您在屏幕截图上看到的那样,您的约束无效,这可能是个问题。如果您使用 Stor
我在单击 JButton 时将 JPanel 添加到 JFrame。它将 JPanel 添加到框架中。该按钮将在点击事件中继续将 JPanel 添加到 JFrame。没有限制。单击按钮时,我也将 JP
我有一个 NSCollectionView 显示内部存储的图像(即不是文件)。集合显示正确。但是,当我开始拖动操作时,应用程序崩溃了。它在拖动离开 Collection View 之前崩溃。我正在返回
我正在尝试解决 iPhone 上拖放的基本问题。这是我的设置: 我有一个 UIScrollView,它有一个大的内容 subview (我可以滚动和缩放它) 内容 subview 有几个小块作为 su
我今天遇到了一个小问题,我想我可以试试堆栈溢出。我会简短而贴心(我删除了很多代码以明确这一点)。 我最近发现了 raphaeljs,我喜欢它。我制作了一些可拖动的圆圈,它像这样工作得很好: 工作脚本:
我是 iOS 开发的新手,想使用分组的 UITableView 和 UITabelCell 来创建一个简单的表单来布置表单的内容。我想在 XCode5 中以交互方式执行此操作。 我的问题是,在将 UI
您好,我是 iOS 编程的新手,想知道将 UIView 拖到 Storyboard 中并以编程方式创建它们之间有什么区别。我正在使用 iPad 进行开发。我有一个 UISplitView。在 Appd
A = 父 NSView;B = 子 NSView; B有一个小的NSTrackingArea;B是A的一个小 subview ; 如果在空白区域中移动、单击、拖动,A 会正确接收 mouseMove
我正在尝试实现自定义 QGraphicsScene,当我们按下左键时,它允许拖动一个项目,为此我使用 QDrag 并传递项目数据,然后覆盖 dropEvent 事件,我在其中获取元素和 dropEve
我是一名优秀的程序员,十分优秀!