पृष्ठभूमि"निजी" दृश्यता संशोधक - सी # से वीबी में परिवर्तित करते समय मतभेदों को कैसे संभालें?
मैं सी # कनवर्टर DeveloperFusion.com में पाया का उपयोग कर VB.net कोड में नीचे दिए गए कोड (TreeViewAdv फ़ाइल TreeColumn.cs में पाया) परिवर्तित कर दिया है।
सी #
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
}
वीबी
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
समस्या
सी # कोड की इस पंक्ति में TreeColumn.TreeColumnConverter तक पहुंच ठीक है। [TypeConverter (typeof (TreeColumn.TreeColumnConverter)), DesignTimeVisible (गलत), ToolboxItem (गलत)]
हालांकि, VB.Net परिवर्तित लाइन में है कि सदस्य के लिए उपयोग की अनुमति नहीं है:
त्रुटि वर्णन पढ़ता है: Aga.Controls.Tree.TreeColumn.TreeColumnConverter' is not accessible in this context because it is 'Private'
। हालांकि, दोनों मामलों में TreeColumn.TreeColumnConverter निजी घोषित किया गया है।
प्रश्न (रों)
1.) क्यों। चूंकि यह मेरे लिए एक सीखने का प्रोजेक्ट है, मैं जानना चाहता हूं कि क्यों दो भाषाओं में स्कॉप्स अलग-अलग काम कर रहे हैं। उनमें से 2 के बीच यह एक और महत्वपूर्ण सवाल है।
2.) कैसे। वीबी कोड को बदलने के लिए सबसे अच्छा तरीका क्या है ताकि TreeColumnConverter को उस बिंदु तक खुलने के बिना कोड की पहचान की गई लाइन तक पहुंचने की इजाजत दी जा सके, जिससे संभावित रूप से नामकरण भ्रम पैदा हो जाए? मैं इसे सार्वजनिक घोषित कर सकता हूं, लेकिन मुझे लगता है कि इसके लिए एक और सही दृष्टिकोण है।
ध्यान रखने योग्य बातें करने के लिए जब
1. उत्तर देना) मुझे पता है कि VB.net में निजी सदस्यों वस्तु जिसमें वे घोषित किया गया करने के लिए बाहरी उपलब्ध नहीं हैं। तो मुझे यह बताएं कि यह सहायक नहीं होगा और मेरे दिमाग में कोई जवाब नहीं है।
कि स्पष्ट मेरे लिए यह एक विशाल जवाब की आवश्यकता क्यों है। बस इसे निजी से मित्र में बदलें। वीबी.नेट एक दोस्ताना भाषा है। –
@ हंसपैसेंट आपको इसे एक उत्तर के रूप में पोस्ट करना चाहिए, जबकि आपने मुझे क्यों नहीं दिया, यह एक वैध तरीका है। जॉर्डो का जवाब भी एक मान्य है। यदि आप मुझे विश्वास दिला सकते हैं कि आपकी पद्धति बेहतर है तो मैं आपको 'स्वीकृत उत्तर' दूंगा। – ProtoNoob