C# 无法从 x.ISessionContext 转换为 y.ISessionContext

C# cannot convert from x.ISessionContext to y.ISessionContext

我在使用 base 和 ref 时遇到这个奇怪的错误。它说我无法在 base.

的单词上下文中将 Consona.Business.ISessionContext 转换为 M2MDomain.ISessionContext
//This class controls the functions in MolDatasheets
[BusinessObject("MolDatasheets")]
public class ExtendedMolDatasheets : BusinessComponent
{
    //This method creates a refrence to base 
    public ExtendedMolDatasheets(ref Consona.Business.ISessionContext context) : base(context)
    {
    }

我不知道为什么当相同的代码可以在其他文件中工作时它不会转换。

因为Consona.Business.ISessionContextM2MDomain.ISessionContext是两个独立的class。仅仅因为它们的名称相同并不意味着它们相同 class。它们驻留在完全不同的命名空间中,可能是完全不同的库。

除非在目标 class 中为源 class 定义了隐式转换运算符,否则您将得到您遇到的错误。

推荐隐式转换,顺便说一句——我建议定义一个必须显式调用的转换函数。您的函数必须手动将第一种类型转换为第二种类型,但这在您的应用程序中是有意义的。