我有一个名为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:我没有像这样设置这些项目,我无法改变它。遗产代码..