이 WinMD 형식으로 출력되는 C# Metro DLL을 작성하는 중 공용 클래스 Id
이 있습니다. Equals
을 재정의하더라도 ==
에 오버로드 할 수 없습니다.C# Windows 런타임 구성 요소에서 공용 클래스에 ==를 사용하지 않도록 개발자에게 어떻게 경고 할 수 있습니까?
그러나이 클래스는 DLL에서 내부적으로 사용되며, 필연적으로 LINQ를 사용하여 분명히 작동하지 않는 .Where(x => x.Id == Ids.House)
을 작성했습니다.
가능한 한 가지 해결책은 IdInternal
을 내부적으로 정의하고 ==
을 덮어 쓰고 Id
안에 감쌀 수 있습니다.
그 해결책이 없다면 (나는 여러 클래스에서 일어날 것이라고 생각합니다.) 컴파일러/런타임 오류를 통해 개발자에게 경고 할 수있는 방법이 있습니까?
오버로드 (오버 라이딩하지 않음) Win8 CP 하에서 VS11 베타에서'=='이 (가) 나를 위해 작동합니다. 네가 그렇게 할 수 없다고 생각하는 이유는 무엇인가? – svick
죄송합니다. 그 점을 지적 해 주셔서 감사합니다. 출력 유형을 WinMD로 전환하면 프레임 워크의 제한된 하위 집합을 가져옵니다. http://msdn.microsoft.com/en-us/library/windows/apps/hh977010(v=vs.110).aspx#Operator "작동 과부하가 허용되지 않음"에 대한 오버로드를 참조하십시오. – Jedidja