1

我的 Visual WebPart 的代码隐藏文件中有以下运算符:

public static implicit operator TemplateControl
(ScholarChip.PaymentProcessor.PaymentProcessor.PaymentProcessor target)
    {
        return ((target == null) ? null : target.TemplateControl);
    }

我收到错误:

User-defined conversion must convert to or from the enclosing type  

我对上述错误不熟悉。谁能建议我如何纠正它?该代码正在 Sharepoint 2010 Visual WebPart 中使用。

非常感谢:)

4

1 回答 1

2

问题是您正在定义 and 之间的转换PaymentProcessorTemplateControl但您没有在PaymentProcessor类或TemplateControl类中定义该转换。TemplateClass 似乎是框架的一部分,所以我怀疑您可以在该类中定义转换。

用户定义的转换必须是被转换的两种类型之一的成员(这只是错误消息所说的另一种说法)。换句话说,如果您控制 PaymentProcessor 类,则将转换移至该类。如果你没有控制任何类,那么你就不走运了,你需要以正常的方法处理转换。

例如,这将给出与您看到的相同的编译器错误:

class A {}
class B {}
class C
{
    public static implicit operator A(B source) { return new A(); }
}

这将编译:

class A {}
class B
{
    public static implicit operator A(B source) { return new A(); }
}

这也会:

class A
{
    public static implicit operator A(B source) { return new A(); }
}
class B {}
于 2012-04-09T22:33:01.190 回答