У меня есть Dictionary<int, Type> msgTypes
в библиотеке классов с таргетингом на .NET 4.6.
Эта DLL импортирована в проект Unity с установленной на .NET Framework 4.x.
Япытаясь отладить код в DLL, поэтому я также импортировал PDB в Unity и подключил VS2017 к процессу Unity с помощью инструментов Unity.
У меня есть следующая строка кода:
...msgTypes.First(x => x.Value == typeof(TIn)).Key...
Это приводит к ошибкам в единстве, потому что говорит, что не может найти совпадение ...
Изображение ниже - то, что я вижу, когда подхожу к этой конкретной строке: ![debug watch](https://i.stack.imgur.com/NX6ww.png)
Есть ли проблема с поддержкой linq в единице?Что означает «Узел не поддерживается»?Что я делаю не так?
Вот весь метод на случай, если он будет интересен:
private Dictionary<int, Type> msgTypes = new Dictionary<int, Type>();
public byte[] Prepare<TIn>(TIn message)
{
var content = msgSerializer.Serialize(message);
byte[] payload = new byte[content.Length + LengthPrefixWidth + IdPrefixWidth];
Buffer.BlockCopy(BitConverter.GetBytes((short)content.Length + IdPrefixWidth), 0, payload, 0, LengthPrefixWidth);
Buffer.BlockCopy(BitConverter.GetBytes((short)msgTypes.First(x => x.Value == typeof(TIn)).Key), 0, payload, LengthPrefixWidth, IdPrefixWidth);
Buffer.BlockCopy(content, 0, payload, LengthPrefixWidth + IdPrefixWidth, content.Length);
return payload;
}
PS словарь заполнен, код длинный, поэтому я не опубликовал его, но есть значения в словаре, и в частности, то, что я ищу, также присутствует.
EDIT
Я заметил, что просмотр TIn
выдает ошибку:
Идентификатор TIn
не входит в область действия
РЕДАКТИРОВАТЬ 2
Этот код работает, если я изменяю:
Buffer.BlockCopy(BitConverter.GetBytes((short)msgTypes.First(x => x.Value == typeof(TIn)).Key), 0, payload, LengthPrefixWidth, IdPrefixWidth);
to:
Buffer.BlockCopy(BitConverter.GetBytes((short)msgTypes.First(x => x.Value == typeof(StatisticsRequest)).Key), 0, payload, LengthPrefixWidth, IdPrefixWidth);
Это говорит мне о том, что что-то не так с универсальной обработкой дженериков.Кроме того, нет никакого способа "наблюдать" за родовым TIn
, согласно VS, его не существует ... Что-то подозрительное с дженериками ...