有关用户定义转换的错误

时间:2012-04-09 22:29:41

标签: c# sharepoint web-parts

我在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中使用。

非常感谢:)

1 个答案:

答案 0 :(得分:2)

问题在于您定义了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 {}