有没有办法在.NET中重载属性

GST*_*STD 14 vb.net overloading properties

我已经做了很多方法重载,但现在我有一个实例,我想重载一个属性.Visual Studio中的IDE似乎允许它,因为我实际上可以设置两个重载,但是我得到一个错误,说它无效,因为它们的类型不同.我想我的语法中缺少一些东西?

我希望能够使用两个(或更多)不同的自定义类作为我的属性的类型.

Public Overloads Property myFlexibleProperty() As myCustomClass1
      Get
         Return _myFlexibleProperty1
      End Get
      Set(ByVal value As myCustomClass1)
         _myFlexibleProperty1 = value
      End Set
   End Property

   Public Overloads Property myFlexibleProperty() As myCustomClass2
      Get
         Return _myFlexibleProperty2
      End Get
      Set(ByVal value As myCustomClass2)
         _myFlexibleProperty2 = value
      End Set
   End Property
Run Code Online (Sandbox Code Playgroud)

到目前为止,我发现的所有帮助都与重载方法有关.尽管IDE让我这么做,我开始认为这是不可能的?

Dan*_*Tao 18

重载某些东西 - 方法或属性 - 您需要它接受一组不同的参数.由于VB.NET中的属性可以接受参数,我猜你可以重载它们; 但他们必须是不同的.

所以你可以这样做:

Public Overloads Readonly Property Average() As Double
Public Overloads Readonly Property Average(ByVal startIndex As Integer) As Double
Run Code Online (Sandbox Code Playgroud)

但不是这个:

Public Overloads Readonly Property Average() As Double
Public Overloads Readonly Property Average() As Decimal
Run Code Online (Sandbox Code Playgroud)

  • @GSTD更改方法名称或参数(参数名称无关紧要;参数类型无关紧要).所以MyMethod(对象)与MyMethod2(对象)不同,MyMethod(int,string)与MyMethod(string,int)不同 (2认同)
  • @GSTD:据我所知,在C#中他们不能.VB允许它.但是,一般情况下,我建议不要提供带参数的属性,除非你有充分的理由.我经常发现开发人员爱上了属性并开始像方法一样使用它们. (2认同)