无法将类型'System.Action <int>'转换为'System.Action <object>'

时间:2018-04-04 07:01:16

标签: c# .net delegates

我想知道我是如何实现这样的目标的?

Action<int>  test = (val) => Console.WriteLine("I am " + val);
Action<object> test2 = (Action<object>) test;

代码:https://dotnetfiddle.net/rZYvLZ

我需要这样做,因为我正在创建一个需要支持许多(数千)Actions委托参数类型的类

1 个答案:

答案 0 :(得分:1)

好吧,你可以包装第一个动作:

Action<object> test2 = (object o) => test((int)o);

但我认为这并不需要太多解释,这是一件非常不安全的事情。因此,不是打破类型安全,也许你可以提出一个更好的设计,尊重类型安全。