1

我有一个我使用的外部程序集,无论出于何种原因,它都没有指定 CLS 合规性。因此,这会导致我的很多代码被标记为不符合 cls。我遇到的问题如下:

public abstract class SomeClass
{
    //Compiler Error CS3011
    [CLSCompliant(false)]
    public abstract object SomeMethod(ExternalNonCompliantType arg);
}

public abstract class SomeClass
{
    //Argument type 'External.ExternalNonCompliantType' is not CLS-compliant
    public abstract object SomeMethod(ExternalNonCompliantType arg);
}

CS3011:

类成员不能既抽象又不符合公共语言规范 (CLS)。CLS 规定所有类成员都应实现。

我真的不知道在这里做什么......

4

1 回答 1

2
  • 您正在编写的代码的预期用途是什么?
  • 你能把你的整个组装成[CLSComplaint(false)]?

如果您的程序集也不兼容,那么您应该可以接受这种代码。您也可以尝试将一个类标记为不合规。我一直只是标记整个程序集。

如果这只是您的代码,并且您没有将其作为库分发,那么这应该不是问题,您无需过多担心 CLS 合规性。

一个例外是,如果您在内部编写一些您希望能够在各种其他 CLR 语言(如 F#、vb.net、ironpython、boo、M、scala 等)中重用的东西。情况可能并非如此; 大多数应用程序就是这样 - 应用程序。

于 2012-07-19T10:07:53.860 回答