문제

나는 필요하다 ReadOnlyDictionary.모든 게시물에서 .Net 4.0에는 아무 것도 없다고 말했습니다.그런 이유로 나는 나만의 구현을 만들었습니다.

그런 다음 Resharper 5.1은 다음에 대한 모호한 참조에 대해 말했습니다. System.Collections.ObjectsModel.ReadOnlyDictionary 하지만 코드는 오류 없이 컴파일됩니다.

이 구현을 사용하려고 했지만 액세스할 수 없습니다.왜?

나는 다음과 같은 코드를 작성하여 ReadOnlyDictionary .Net 4.0에서:

var foo = from assembly in AppDomain.CurrentDomain.GetAssemblies()
          where assembly.FullName.Contains("mscorlib")
          from type in assembly.GetTypes()
          where type.Name.StartsWith("ReadOnly")
          select type.FullName + " " + assembly.FullName;

그리고 놀라운 결과는 다음과 같습니다.

System.Collections.ReadOnlyCollectionBase mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Collections.ObjectModel.ReadOnlyCollection`1 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Collections.ObjectModel.ReadOnlyDictionary`2 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Collections.ObjectModel.ReadOnlyDictionaryHelpers mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Runtime.InteropServices.WindowsRuntime.ReadOnlyArrayAttribute mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Runtime.InteropServices.WindowsRuntime.ReadOnlyDictionaryKeyCollection`2 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Runtime.InteropServices.WindowsRuntime.ReadOnlyDictionaryKeyEnumerator`2 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Runtime.InteropServices.WindowsRuntime.ReadOnlyDictionaryValueCollection`2 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Runtime.InteropServices.WindowsRuntime.ReadOnlyDictionaryValueEnumerator`2 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Security.ReadOnlyPermissionSet mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Security.ReadOnlyPermissionSetEnumerator mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Collections.ArrayList+ReadOnlyList mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Collections.ArrayList+ReadOnlyArrayList mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

이있다 ReadOnlyDictionary .Net 4.0에서.이 유형을 반영하기 위해 dotPeek 1.1을 사용했으며 공개되었습니다.

이 유형에 액세스할 수 없는 이유는 무엇입니까?Resharper 5.1(7.1에는 이 문제가 없음)에서 모호한 참조를 방지하려면 어떻게 해야 합니까?

도움이 되었습니까?

해결책

ReadOnlyDictionary .NET 4.5에서 도입되었습니다.이제 .NET 4.5는 "최상위" 설치이므로 mscorlib 버전에서 볼 수 있습니다.그러나 프로젝트가 .NET 4.0을 대상으로 하는 경우 Visual Studio에는 어떤 유형이 사용되었는지 알려주는 참조 어셈블리가 있을 수 있습니다. 정말 .NET 4.0에서.

대신 .NET 4.5를 대상으로 하도록 앱을 업그레이드할 수 있다면 이것이 가장 간단한 해결 방법이 될 것입니다.R# 경고 수정 측면에서 이전 버전에서만 발생하는 경우 무시하는 것이 좋습니다.오픈 소스 프로젝트인 경우 어딘가에 문서화하고 싶을 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top