我們有接口,可以非常簡化爲:受保護設置在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