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)]か?

アセンブリも準拠していない場合は、この種のコードで問題ないはずです。1 つのクラスを非準拠としてマークすることもできます。私はいつもアセンブリ全体をマークしてきました。

これが単なるコードであり、ライブラリとして配布していない場合、問題にはならず、CLS 準拠についてあまり心配する必要はありません。

1 つの例外は、F#、vb.net、ironpython、boo、M、scala などのさまざまな他の CLR 言語で再利用できると予想されるものを内部的に作成している場合です。おそらくそうではありません。 ; ほとんどのアプリはまさにそれです - アプリ。

于 2012-07-19T10:07:53.860 に答える