gpt4 book ai didi

c# - VS2010 编译器错误 "is not assignable to parameter type T"我相信不是约束问题

转载 作者:太空宇宙 更新时间:2023-11-03 22:05:00 25 4
gpt4 key购买 nike

我认为它与 Rhino 模拟无关。

这是编译器错误吗?

第二个代码块中 ERROR: comment 下面的行给编译器警告,我不明白为什么。更让我吃惊的是 block 3 能正常工作。

这个工作正常,所以我将它转换为 Generic ActivatePresenterAction2

private void ActivatePresenterAction1(IListViewHelper<PairDirEntry> lvh)
{
var args = lvh.GetArgumentsForCallsMadeOn(
x => x.ActionOnActivateItem(Arg<Action<PairDirEntry>>.Is.Anything));
Assert.That(args.Count, Is.EqualTo(1));
Assert.That(args[0].Length, Is.EqualTo(1));
var action = (Action<PairDirEntry>)(args[0][0]); // extract the ActivateOnItem action
action(_pairDirEntry); // as if ActionOnActivateItem()
}

这个作品无法在注释行上编译

private void ActivatePresenterAction2<T>(IListViewHelper<T> lvh) where T : class
{
var args = lvh.GetArgumentsForCallsMadeOn(
x => x.ActionOnActivateItem(Arg<Action<T>>.Is.Anything));
Assert.That(args.Count, Is.EqualTo(1));
Assert.That(args[0].Length, Is.EqualTo(1));
var action = (Action<T>)(args[0][0]); // extract the ActivateOnItem action
//
// ERROR: is not assignable to parameter type T on hliighted line
// marking the parameter _pairDirEntry
//
action(_pairDirEntry); // as if ActionOnActivateItem()
}

对通用的这种更改工作正常。

ActivatePresenterAction3(_stubSearchResultListViewHelper)(_pairDirEntry);

private Action<T> ActivatePresenterAction3<T>(IListViewHelper<T> lvh) where T : class
{
var args = lvh.GetArgumentsForCallsMadeOn(
x => x.ActionOnActivateItem(Arg<Action<T>>.Is.Anything));
Assert.That(args.Count, Is.EqualTo(1));
Assert.That(args[0].Length, Is.EqualTo(1));
return (Action<T>)(args[0][0]);
}

最佳答案

正如编译器错误明确指出的那样,_pairDirEntry不是 T ,因此您不能将其传递给接受 T 的委托(delegate).

关于c# - VS2010 编译器错误 "is not assignable to parameter type T"我相信不是约束问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8752524/

25 4 0