bazy odniesienia: Ten Code Conversions for VBA, Visual Basic .NET, and C#
VBA równoważne C# za pomocą VB.NET lub import/Tworzenie aliasów
Uwaga: już utworzony i zaimportowany *.dll
, to pytanie jest oaliasy.
Powiedzmy, że programowa nazwa klasy Test
jest TestNameSpace.Test
[ProgId("TestNamespace.Test")]
public class Test ...
Teraz, powiedzmy rozwiązanie C# został uszczelniony i zebrane w *.dll
a ja przedstawieniu go w VBE danego programu Excel. Uwaga: w tym momencie nie mogę zmodyfikować programowej nazwy tak, jakby *.dll
nie została napisana przeze mnie.
Jest to VBA
: Zamiast deklarowania zmiennej tak:
Dim myTest As TestNameSpace.Test
Set myTest = new TestNameSpace.Test
wolałbym to nazwać (wciąż w VBE)
Dim myTest As Test
Set myText = new Test
W języku C# byś zwykle mówi się:
using newNameForTest = TestNamespace.Test;
newNameForTest myTest = new NewNameForTest;
Uwaga: Załóżmy, że istnieją bez nazw konflikty w projekcie
Pytanie VBA
: Czy istnieje odpowiednik rozmowy VBA
do C#
using
lub VB.NET
imports
aliasy?
Dlaczego mylące? A co ma dziedziczyć z przestrzeniami nazw? Przestrzenie nazw to sposób na prawidłową klasyfikację wszystkiego; dziedziczenie to podejście stosowane w celu przyspieszenia definicji danego obiektu (np. pobranie wszystkich informacji z tego innego obiektu). Dziedziczenie nie ma nic wspólnego z importem. – varocarbas
W jednym z podanych przeze mnie linków facet proponuje sposób emulacji przestrzeni nazw. Nie mówię, że nie możesz czegoś wymyślić; Twierdzę, że nie miałoby zbytniego sensu stosowanie wbudowanej funkcjonalności do krótkich nazw, gdy najdłuższe imię, które masz, składa się tylko z dwóch słów. – varocarbas
oh być może byłem niejasny z moim komentarzem. Zwróć uwagę na * ukryt * wbudowaną funkcję w VBE, która pozwala na wypowiedzenie '(" Arkusz1 ")' zamiast 'Application.ThisWorkbook.Sheets (" Arkusz1 ")'. Teraz pomyśl, jak każdy element (prawa strona kropki) musi odziedziczyć po swojej klasie nadrzędnej (po lewej stronie).Ponieważ jest to wbudowana funkcja, jest ona zapieczętowana, dlatego tworzenie własnych klas i członków nigdy nie pozwoli na wywoływanie ich w podobny sposób. Zawsze musisz podać pełną ścieżkę do swoich klas Class1.Class2.ClassNm, VBE nie utworzy dla ciebie przestrzeni nazw. czy to pomoże zrozumieć mój pierwszy komentarz? –