Der Hintergrund"Private" Sichtbarkeitsmodifikator - wie behandelt man Unterschiede bei der Konvertierung von C# nach VB?
ich den unter C# -Code umgewandelt haben in VB.net Code mit dem Konverter bei DeveloperFusion.com gefunden (in TreeViewAdv Datei TreeColumn.cs gefunden).
C#
using System;
//...(other using calls)
namespace Aga.Controls.Tree
{
[TypeConverter(typeof(TreeColumn.TreeColumnConverter)), DesignTimeVisible(false), ToolboxItem(false)]
public class TreeColumn : Component
{
private class TreeColumnConverter : ComponentConverter
{
public TreeColumnConverter()
: base(typeof(TreeColumn))
{
}
public override bool GetPropertiesSupported(ITypeDescriptorContext context)
{
return false;
}
}
}
//…Some, I believe, unrelated code
}
VB
Imports System.Collections.Generic
‘...(other Imports calls)
Namespace Aga.Controls.Tree
<TypeConverter(GetType(TreeColumn.TreeColumnConverter)), DesignTimeVisible(False), ToolboxItem(False)> _
Public Class TreeColumn
Inherits Component
Private Class TreeColumnConverter
Inherits ComponentConverter
Public Sub New()
MyBase.New(GetType(TreeColumn))
End Sub
Public Overrides Function GetPropertiesSupported(ByVal context As ITypeDescriptorContext) As Boolean
Return False
End Function
End Class
‘...some, I believe, unrelated code
End Class
Das Problem
Zugang zu TreeColumn.TreeColumnConverter in dieser Zeile des Codes C# ist in Ordnung. [Typeconverter (typeof (TreeColumn.TreeColumnConverter)), Designtime (false), ToolboxItem (false)]
jedoch VB.Net erlauben keinen Zugriff auf dieses Element in die umgewandelte Zeile:
Der Fehler Beschreibung liest: Aga.Controls.Tree.TreeColumn.TreeColumnConverter' is not accessible in this context because it is 'Private'
. In beiden Fällen wird TreeColumn.TreeColumnConverter jedoch als Privat deklariert.
Die Frage (n)
1.) Das Warum. Da dies ein Lernprojekt für mich ist, würde ich gerne wissen, warum die Bereiche sich in den beiden Sprachen unterschiedlich verhalten. Dies ist die wichtigere Frage unter den 2 von ihnen.
2.) Das Wie. Was ist der beste Weg, den VB-Code so zu ändern, dass TreeColumnConverter auf die angegebene Codezeile zugreifen kann, ohne den Bereich so weit zu öffnen, dass möglicherweise an anderer Stelle Benennungsverwechslungen entstehen? Ich könnte es nur öffentlich erklären, aber ich stelle mir vor, dass es einen richtigeren Ansatz dafür gibt.
Dinge im Auge zu behalten, wenn
1. Answering) Ich weiß, dass in VB.net Privat Mitglieder außerhalb des Objekts nicht verfügbar sind, in der sie deklariert wurden. Also sagt mir, dass dies nicht hilfreich ist und in meinen Gedanken keine Antwort ist.
nicht so klar zu mir, warum dies eine riesige Antwort erfordert. Ändern Sie einfach von Privat zu Freund. VB.NET ist eine freundliche Sprache. –
@HansPassant Sie sollten dies als Antwort posten, während Sie mir nicht das WARUM gegeben haben, das ist ein gültiges WIE. Jordao Antwort ist auch ein gültiges wie. Wenn Sie mich davon überzeugen können, dass Ihre Methode besser ist, gebe ich Ihnen die "Angenommene Antwort". – ProtoNoob