我们有接口,可以非常简化为:受保护设置在VB.Net中的接口定义的属性
public interface IPersistable<T>
{
T Id { get; }
}
实现接口的大部分地方想拥有它,这样是有保护或对财产,即私定,在C#:
public class Foo : IPersistable<int>
{
public int Id { get; protected set; }
}
但是,我不能让任何样品VB.Net代码编译遵循相同的模式,同时仍实现接口,所以:
Public Class Foo
Implements IPersistable(Of Integer)
Public Property Id() As Integer Implements IPersistable(Of Integer).Id
Get
Throw New NotImplementedException()
End Get
Protected Set(ByVal value As Integer)
Throw New NotImplementedException()
End Set
End Property
End Class
...不会编译,但这:
Public Class Foo
Public Property Id() As Integer
Get
Throw New NotImplementedException()
End Get
Protected Set(ByVal value As Integer)
Throw New NotImplementedException()
End Set
End Property
End Class
我明白,这个例子是过于琐碎,并且将可能通过保护构造可以更好地实现,但我有兴趣,如果它可以以这种方式完成?
[编辑:] ...显然,如果一个类型想要使用XMLSerialization,那么这些属性需要是公共读/写,或者这些类型需要为每个类型编写自定义串行器。
从本质上讲,我发现界面应该定义最小的可访问性,但VB将其解释为确切的可访问性?
+1在我注意到VBNET不允许之前,我遇到了同样的情况。 – 2010-03-02 15:31:40