나는 더 나은 질문을 문서화합니다. 이 코드
ref class Test sealed {
public:
event EventHandler^ blah;
};
를 생성 :
경고 : CA1047 : Microsoft.Design : 회원 확인 '테스트 :: ㅋ :: 인상 (객체 ^있는 EventArgs을 ^)을'공공 민간 또는
내부
예, 이벤트 접근자를 지정하지 않으면 컴파일러에서 자동으로 생성합니다. 그것은 add, remove 및 raise 접근자를 자동으로 생성합니다.
.method family hidebysig specialname instance void
raise_blah(object value0,
class [mscorlib]System.EventArgs value1) cil managed
{
// etc..
}
가족 속성은 코드 분석 경고를 일으키는 것입니다 : 당신이 Ildasm.exe를 함께 볼 때 후자의 하나는 다음과 같습니다. 자동으로 생성 된 추가 및 제거 접근자는 물론 공개됩니다. 직접 작성하는 것은 의심스러운 해결 방법입니다. 사용자 정의 접근자를 구현해야하는 진정한 이유가있는 경우에만이 작업을 수행하고 싶을 것입니다. 상용구 버전은 다음과 같습니다.
using namespace System::Runtime::CompilerServices;
ref class Test sealed {
private:
EventHandler^ foo;
public:
event EventHandler^ blah {
[MethodImpl(MethodImplOptions::Synchronized)]
void add(EventHandler^ d) { foo += d; }
[MethodImpl(MethodImplOptions::Synchronized)]
void remove(EventHandler^ d) { foo -= d; }
private:
void raise(Object^ sender, EventArgs^ e) {
EventHandler^ handler = foo;
if (handler != nullptr) handler(sender, e);
};
}
};
글쎄, 분명히 경고가 표시되지 않습니다. Propeller를 회전시키지 않으면 [SuppressMessage] 속성을 사용하는 것이 좋습니다.
최소한의 예를 보여줄 수 있습니까? –