Вопрос

Мне нужен генеракодицетагкод.Все сообщения сказали мне, что нет в .NET 4.0.По этой причине я создал свою собственную реализацию.

После того, как решарпер 5.1 рассказал мне о неоднозначной ссылке на 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
.

Есть генеракодицетагкод в .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