У меня есть некоторый код, который добавляет Func<short>
к Dictionary<byte, Func<short>>
с индексом 0. Позже, некоторый код в классе, который содержит словарь, пытается извлечь этот Func (через TryGetValue) и выполнить его, вызывая исключение если это не работает. Несмотря на то, что доступ к индексу допустим, он выдает исключение, которое означает, что извлечение функции завершилось неудачно. Почему это? (при необходимости можете предоставить код)
//processor construction and setup
VirtualProcessor processor = new VirtualProcessor();
...
processor.InputChannels.Add(0, () => { return 2; });//the func i'm trying to access
//end processor construction and setup
//build program
Dictionary<short, Command> commands = new Dictionary<short, Command>();
commands.Add(0, CommandFactory.CreateInputCommand(0, 0));//this, in a roundabout way, attempts to call the func
commands.Add(1, CommandFactory.CreateLoadCommand(1, 200));
commands.Add(2, CommandFactory.CreateAddCommand(0, 1, 2));
commands.Add(3, CommandFactory.CreateHaltCommand());
//end build program
//execution
processor.CurrentProgram = commands;
processor.ExecuteTillHalt();
//end execution
Console.ReadLine();
Где-то в пустыне коммутаторов, в другом классе ...
Func<short> inChannel;
InputChannels.TryGetValue(command.Data2, out inChannel);//the attempt to access the func, this is the second value supplied to CreateInputCommand above
if (inChannel != null)
Registers[command.Data1] = inChannel();//should be here
else
throw new InvalidInputChannelException("Invalid input channel " + command.Data2); //throws this