18
A
回答
34
这里就是你问什么的样品(类型检查可以在最后一行添加到妥善处理无效的转换异常更加人性化):
public Action<object> Convert<T>(Action<T> myActionT)
{
if (myActionT == null) return null;
else return new Action<object>(o => myActionT((T)o));
}
可能是你可以给更多的细节这个任务虽然,因为现在它看起来有点奇怪。
0
不知道你的转换是什么意思......动作是委托的泛型声明...如果你想要一个动作代表,关于“对象”的作品,你会做这样的事情:
var myAction = new Action<object>(obj=> ...);
0
我假设你有这样的事情:
void Foo(Action<object> action) { }
Action<something> myaction;
而且要转换myaction这样你就可以将它传递给富。
这是行不通的。
Foo可以将任何对象传递给源自对象的动作。但我的行为只接受来自某物的物体。
0
我正在寻找一种方法来做到这一点今天偶然发现这篇文章。真的,我发现这样做的唯一简单方法是将行动<字符串>包含在新的动作<对象>内。在我的情况下,我将我的动作放入并行字典中,然后按类型检索它们。实际上,我正在处理一个消息队列,其中可以定义操作来处理具有特定类型输入的消息。
var _actions = new ConcurrentDictionary<Type, Action<object>>();
Action<string> actionStr = s => Console.WriteLine(s);
var actionObj = new Action<object>(obj => { var castObj = (V)Convert.ChangeType(obj, typeof(V)); actionStr(castObj); });
_actions.TryAdd(typeof(string), actionObj);
相关问题
- 1. 转换操作数<T>整数
- 2. 操作<<为QString的
- 3. PHP操作<<<
- 4. web.config转换为<applicationSettings>
- 5. 的Java <<操作
- 6. 使用<<操作
- 7. 标准库函数的对象为操作者提供<<转换为std :: string
- 8. 将JavaRDD <ArrayList<T>>转换为JavaRDD <T>
- 9. 错误传递工会作为参数的操作符<<
- 10. 转换List <Staging <Importable>>转换为List <Staging <ImportableImpl >> with java 8 stream
- 11. Meteor.js中的操作转换?
- 12. 将Delphi按位操作转换为Cobol
- 13. 将python操作转换为numpy
- 14. 将Servlet转换为Struts2操作类
- 15. 位操作转换为整数
- 16. 转换列表<MyObject>转换成词典<obj.string,列表<obj.ID>>
- 17. F#deedle转换系列<string, obj>转换为Series <string,float>?
- 18. 转换或投出列表<t>转换为EntityCollection <T>
- 19. 错误操作符<<重载 - 没有操作员发现
- 20. 将linq内的日期转换操作转换为实体
- 21. 转换&LT至<xml文档
- 22. 将PostgreSQL操作符转换为与MySQL等价的操作符?
- 23. 如何将Delphi复制操作转换为.Net子串操作?
- 24. 布尔操作符<, >,<=等
- 25. 重载<<操作员错误
- 26. 重载ostream的<<操作
- 27. “<<” 操作符在Java中
- 28. 模板和overloadering操作符<<
- 29. 没有操作员 “<<” 匹配
- 30. 操作<<在抽象类中,C++
这个问题没有道理,你不能创建一个动作,你必须指定一个类型。 –
2010-08-09 21:14:17
猜测这些协变/逆变问题中的一个,否则答案将是'Action
除非T仅限于类,否则不能将开放泛型类型转换为Object。在代码中,分配给Action