超载! VB中的运算符用于C#

时间:2018-02-07 18:18:09

标签: c# vb.net operator-overloading

我有一个名为Filter的VB类,我实现了几个运算符。其中一个是Not运算符:

Public MustInherit Class Filter(Of T)

    Public Shared Operator Not(filter As Filter(Of T)) As Filter(Of T)
        Return new NotFilter(Of T)(filter))
    End Operator

    ' other operators..

    Public MustOverride Function filters(o As T) As Boolean
End Class

Public Class NotEmptyFilter 
    Inherits Filter(Of String)

    Public Overrides Function filters(o As String) As Boolean
        Return o.Length > 0;
    End Function

End Class

现在我想在其他几个用C#编写的项目中使用这个代码。我使用Or运算符作为|运算符没有任何困难,但我无法使用Not运算符作为!运算符,如下所示:

Filter<string> isEmptyFilter = !(new NotEmptyFilter());

因为我得到以下编译器错误:

  

Operator '!' cannot be applied to operand of type 'Filter<string>'

有人知道如何解决这个问题吗?关于为什么这不起作用的解释的加分点。

PS:我没有像这样设置这些项目,我无法改变它。遗产代码..

0 个答案:

没有答案