使用ValueInjecter,我经常发现自己正在编写如下代码:

var foo1 = new Foo().InjectFrom(foo2);


但这出乎意料地导致foo1成为对象类型,而不是Foo类型。与...相同

var foo1 = (new Foo()).InjectFrom(foo2);




Foo foo1 = new Foo().InjectFrom(foo2);


不会编译。没什么大不了的,因为我可以轻松地做到

var foo1 = (Foo)new Foo().InjectFrom(foo2);


要么

var foo1 = new Foo();
foo1.InjectFrom(foo2);


两者都按预期工作,但我很好奇。为什么第一种方法不起作用?

最佳答案

我没有使用ValueInjecter,但我想是InjectFrom方法返回对象值。
由于var是Sugar语法,并且在编译期间自动定义变量类型,因此该变量被定义为Object。
这就是为什么您必须使用显式类型转换才能使这项工作为您服务的原因。

关于c# - 内联构造函数和InjectFrom调用返回Object,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12073472/

10-12 21:16