我有一个方法的接口上的值:返回使通入一个模拟的方法
SomeClass的DoSomething的(SomeClass的任何);`
我不能做.Returns(x => x)
因为错误的:
cannot convert lambda expression to type Someclass because it is not a delegate type.
任何想法?
我有一个方法的接口上的值:返回使通入一个模拟的方法
SomeClass的DoSomething的(SomeClass的任何);`
我不能做.Returns(x => x)
因为错误的:
cannot convert lambda expression to type Someclass because it is not a delegate type.
任何想法?
这些方法重载看看:
Returns(TResult value)
Returns<T>(Func<T, TResult> valueFunction)
这似乎很明显的你,C#编译器应该选择第二个重载。但实际上C#编译器无法从您传递的参数x => x
推断通用参数T
的类型。这就是为什么编译器选择非通用版本的方法并尝试将lambda转换为SomeClass的原因。
要解决此问题,您应该帮助编译器推断通用参数T
的类型。您可以通过显式指定类型的委托参数的做到这一点:
.Returns((SomeClass x) => x);
或者你可以指定T
型手动
.Returns<SomeClass>(x => x)
您可以创建someclass
一个实例,并返回同样喜欢
someclass cl = new someclass
{
//property initialization
};
mockinstance.Setup(s => s.DoSomething(cl)).Returns(cl);
可能的重复[无法将lambda表达式转换为类型'string',因为它不是委托类型](http://stackoverflow.com/questions/19197481/cannot-convert-lambd a-expression-to-type-string-because-it-not-a-delegate -t) –
使用适当的标签并且不包括它问题标题 – Rahul