我有一个我使用的外部程序集,无论出于何种原因它都没有指定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指定所有 班级成员应实施。
我真的不确定该怎么做......
答案 0 :(得分:2)
[CLSComplaint(false)]
吗?如果您的程序集也不兼容,那么您应该可以使用这种代码。您还可以尝试将一个类标记为不合规。我总是只标记整个组件。
如果这只是您的代码,并且您没有将其作为库分发,那么它不应该是一个问题,您不必过于担心CLS合规性。
唯一的例外是,如果你在内部写一些你期望能够在各种其他CLR语言中重复使用的东西,比如F#,vb.net,ironpython,boo,M,scala等等。不是这样;大多数应用只是 - 应用程序。