C# .Net 4.0 mscorlib contains ReadOnlyDictionary?
本文关键字:contains ReadOnlyDictionary mscorlib Net | 更新日期: 2023-09-27 18:06:47
我需要一个ReadOnlyDictionary
。所有的帖子都告诉我在。net 4.0中没有。因此,我创建了自己的实现。
这样做之后,Resharper 5.1告诉我关于对System.Collections.ObjectsModel.ReadOnlyDictionary
的模糊引用,但代码正在编译中没有错误。
我试图使用这个实现,但它是不可访问的。为什么?
我写了下面的代码来测试。net 4.0中是否有ReadOnlyDictionary
:
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
. net 4.0中有一个ReadOnlyDictionary
。我使用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#警告方面—如果它只发生在旧版本中,您可能想要忽略它。如果这是一个开源项目,您可能想要在某个地方记录它。