C# 在未引用的程序集中定义的类型。只在一个地点发生

C# 在未引用的程序集中定义的类型。只在一个地点发生,c#,.net,C#,.net,我发现下面的错误看起来很奇怪,并且不确定如何修复它 类型“IDataTransaction”是在未定义的程序集中定义的 参考。必须添加对程序集“Project.Common.LLBL”的引用, 版本=1.0.0.0,区域性=中性,PublicKeyToken=null' 所讨论的代码如下:(此代码在Project.Services.csproj中的CategoryService.cs中定义) 这是服务类的一部分,该服务类具有许多方法,这些方法对其他组件进行类似的方法调用 _getCategory

我发现下面的错误看起来很奇怪,并且不确定如何修复它

类型“IDataTransaction”是在未定义的程序集中定义的 参考。必须添加对程序集“Project.Common.LLBL”的引用, 版本=1.0.0.0,区域性=中性,PublicKeyToken=null'

所讨论的代码如下:(此代码在
Project.Services.csproj
中的
CategoryService.cs
中定义)

这是服务类的一部分,该服务类具有许多方法,这些方法对其他组件进行类似的方法调用

_getCategoryNavigationForNodeComponent是一个接口,定义如下:(此接口位于
项目.BusinessLogic.csproj
中)

这就是我困惑的地方。根据错误消息,我需要引用
Project.Common.LLBL
。奇怪的是,如果我注释掉这行代码,一切都会编译得非常好。引用完全相同的
IDataTransaction
的其他接口没有此问题。仅仅是一行代码似乎失败了,我不知道为什么

此外,如果我从
Execute
调用中删除
includeobsolate
参数,这似乎也能解决问题,但我显然希望保留该参数

只有特定的接口会导致此错误发生的原因是什么

编辑

因此,在玩代码时,我尝试将命名参数添加到Execute调用中,现在错误消失了:

public CategoryHierarchyNode GetCategoryNavigationTree(int categoryID, UserContext userContext, bool includeObsolete = false)
{
    return _getCategoryNavigationForNodeComponent.Execute(categoryID: categoryID, includeObsolete: includeObsolete, userContext:userContext);
}

有人能解释一下这是怎么回事吗?我的第一个想法是编译器混淆了接口的第三个签名(不包括IDataTransaction参数)和接口的第四个签名(包括IDataTransaction)。为什么编译器会对此感到困惑?

IDataTransaction是在多个名称空间中定义的吗?不,它只在“Project.Common.LLBL”中定义@EJoshuaS为一些新发现添加了编辑,如果您对此有意见的话。
public interface IGetCategoryNavigationForNodeComponent
{
    CategoryHierarchyNode Execute(int categoryID, UserContext userContext, IDataTransaction context);

    CategoryHierarchyNode Execute(int categoryID, UserContext userContext);

    CategoryHierarchyNode Execute(int categoryID, bool includeObsolete, UserContext userContext);

    CategoryHierarchyNode Execute(int categoryID, bool includeObsolete, UserContext userContext, IDataTransaction context);
}
public CategoryHierarchyNode GetCategoryNavigationTree(int categoryID, UserContext userContext, bool includeObsolete = false)
{
    return _getCategoryNavigationForNodeComponent.Execute(categoryID: categoryID, includeObsolete: includeObsolete, userContext:userContext);
}