【问题标题】:C# cannot convert from x.ISessionContext to y.ISessionContextC# 无法从 x.ISessionContext 转换为 y.ISessionContext
【发布时间】:2016-10-19 14:07:08
【问题描述】:

我在使用 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)
    {
    }

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

【问题讨论】:

  • 它们是不同的类型;他们只是碰巧有相同的名字。显示来自BusinessComponent的构造函数定义;我猜它的参数类型不同。

标签: c# base ref


【解决方案1】:

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

除非在目标类中为源类定义了隐式转换运算符,否则你会得到你得到的错误。

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

【讨论】:

  • 嘿,我还没有弄清楚问题出在哪里,但我确实意识到错误说我无法转换为 M2MDomain.SessionContext 而不是 ISessionContext。 M2MDomain 包含一个包含 ISessionContext 的类 SessionContext。所以现在的问题是如何在该类中引用 ISessionContext。
猜你喜欢
  • 1970-01-01
  • 2021-12-26
  • 1970-01-01
  • 2013-08-20
  • 1970-01-01
  • 2010-10-15
  • 2019-07-05
  • 2019-04-13
  • 2020-07-21
相关资源
最近更新 更多