Aracılığıyla paylaş


Xamarin Android ve iOS'ta Visual Basic

Örnek uygulama, .NET Standart kitaplığında derlenen Visual Basic kodunun Xamarin ile nasıl kullanılabileceğini gösterir. Android ve iOS'ta çalışan sonuçta elde edilen uygulamaların bazı ekran görüntüleri şunlardır:

Visual Basic ile oluşturulmuş bir uygulamayı çalıştıran Android ve iOS

Örnekteki Android ve iOS projelerinin tümü C# dilinde yazılmıştır. Her uygulamanın kullanıcı arabirimi yerel teknolojilerle oluşturulurken TodoItem , yönetim Visual Basic .NET Standard kitaplığı tarafından bir XML dosyası kullanılarak sağlanır (tam veritabanı değil tanıtım amacıyla).

Örnek kılavuz

Bu kılavuzda, iOS ve Android için TaskyVB Xamarin örneğinde Visual Basic'in nasıl uygulandığı açıklanır.

Not

Bu kılavuza devam etmeden önce Visual Basic ve .NET Standard yönergelerini gözden geçirin.

Paylaşılan kullanıcı arabirimi Visual Basic koduyla uygulama derlemeyi görmek için Visual Basic kullanarak Xamarin.Forms yönergelerine bakın.

VisualBasicNetStandard

Visual Basic .NET Standart kitaplıkları yalnızca Windows üzerinde Visual Studio'da oluşturulabilir. Örnek kitaplık, bu Visual Basic dosyalarında uygulamamızın temellerini içerir:

  • TodoItem.vb
  • TodoItemManager.vb
  • TodoItemRepositoryXML.vb
  • Xml Depolama.vb

TodoItem.vb

Bu sınıf, uygulama genelinde kullanılacak iş nesnesini içerir. Visual Basic'te tanımlanır ve C# dilinde yazılan Android ve iOS projeleriyle paylaşılır.

Sınıf tanımı burada gösterilmiştir:

Public Class TodoItem
    Property ID() As Integer
    Property Name() As String
    Property Notes() As String
    Property Done() As Boolean
End Class

Örnek, TodoItem nesnelerini yüklemek ve kaydetmek için XML serileştirme ve seri durumdan çıkarma kullanır.

TodoItemManager.vb

Manager sınıfı, taşınabilir kod için 'API' sunar. Sınıfı için TodoItem temel CRUD işlemleri sağlar, ancak bu işlemlerin uygulanması gerekmez.

Public Class TodoItemManager
    Private _repository As TodoItemRepositoryXML
    Public Sub New(filename As String)
        _repository = New TodoItemRepositoryXML(filename, storage)
    End Sub
    Public Function GetTask(id As Integer) As TodoItem
        Return _repository.GetTask(id)
    End Function
    Public Function GetTasks() As List(Of TodoItem)
        Return New List(Of TodoItem)(_repository.GetTasks())
    End Function
    Public Function SaveTask(item As TodoItem) As Integer
        Return _repository.SaveTask(item)
    End Function
    Public Function DeleteTask(item As TodoItem) As Integer
        Return _repository.DeleteTask(item.ID)
    End Function
End Class

Oluşturucu bir IXml Depolama örneğini parametre olarak alır. Bu, her platformun kendi çalışma uygulamasını sağlamasına olanak tanırken taşınabilir kodun paylaşılabilen diğer işlevleri açıklamasını sağlar.

TodoItemRepository.vb

Depo sınıfı, TodoItem nesnelerinin listesini yönetme mantığını içerir. Kodun tamamı aşağıda gösterilmiştir; mantık genellikle TodoItems genelinde benzersiz bir kimlik değerini koleksiyona eklendikçe ve koleksiyondan kaldırıldıklarında yönetmek için kullanılır.

Public Class TodoItemRepositoryXML
    Private _filename As String
    Private _storage As IXmlStorage
    Private _tasks As List(Of TodoItem)

    ''' <summary>Constructor</summary>
    Public Sub New(filename As String)
        _filename = filename
        _storage = New XmlStorage
        _tasks = _storage.ReadXml(filename)
    End Sub
    ''' <summary>Inefficient search for a Task by ID</summary>
    Public Function GetTask(id As Integer) As TodoItem
        For t As Integer = 0 To _tasks.Count - 1
            If _tasks(t).ID = id Then
                Return _tasks(t)
            End If
        Next
        Return New TodoItem() With {.ID = id}
    End Function
    ''' <summary>List all the Tasks</summary>
    Public Function GetTasks() As IEnumerable(Of TodoItem)
        Return _tasks
    End Function
    ''' <summary>Save a Task to the Xml file
    ''' Calculates the ID as the max of existing IDs</summary>
    Public Function SaveTask(item As TodoItem) As Integer
        Dim max As Integer = 0
        If _tasks.Count > 0 Then
            max = _tasks.Max(Function(t As TodoItem) t.ID)
        End If
        If item.ID = 0 Then
            item.ID = ++max
            _tasks.Add(item)
        Else
            Dim j = _tasks.Where(Function(t) t.ID = item.ID).First()
            j = item
        End If
        _storage.WriteXml(_tasks, _filename)
        Return max
    End Function
    ''' <summary>Removes the task from the XMl file</summary>
    Public Function DeleteTask(id As Integer) As Integer
        For t As Integer = 0 To _tasks.Count - 1
            If _tasks(t).ID = id Then
                _tasks.RemoveAt(t)
                _storage.WriteXml(_tasks, _filename)
                Return 1
            End If
        Next
        Return -1
    End Function
End Class

Not

Bu kod, çok temel bir veri depolama mekanizması örneğidir. Bir .NET Standard kitaplığının platforma özgü işlevlere erişmek için bir arabirime karşı nasıl kod oluşturabileceğini göstermek için sağlanır (bu durumda, bir XML dosyasını yükleme ve kaydetme). Üretim kalitesinde bir veritabanı alternatifi olması amaçlanmamıştır.

Android ve iOS uygulama projeleri

iOS

iOS uygulamasında TodoItemManager ve XmlStorageImplementation , bu kod parçacığında gösterildiği gibi AppDelegate.cs dosyasında oluşturulur. İlk dört satır yalnızca verilerin depolanacağı dosyanın yolunu oluşturuyor; son iki satır örneklenen iki sınıfı gösterir.

var xmlFilename = "TodoList.xml";
string documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal); // Documents folder
string libraryPath = Path.Combine(documentsPath, "..", "Library"); // Library folder
var path = Path.Combine(libraryPath, xmlFilename);

TaskMgr = new TodoItemManager(path);

Android

Android uygulamasında TodoItemManager ve XmlStorageImplementation , bu kod parçacığında gösterildiği gibi Application.cs dosyasında oluşturulur. İlk üç satır yalnızca verilerin depolanacağı dosyanın yolunu oluşturuyor; son iki satır örneklenen iki sınıfı gösterir.

var xmlFilename = "TodoList.xml";
string libraryPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
var path = Path.Combine(libraryPath, xmlFilename);

TaskMgr = new TodoItemManager(path);

Uygulama kodunun geri kalanı öncelikli olarak kullanıcı arabirimiyle ilgilenir ve sınıfları yüklemek ve kaydetmek TodoItem için sınıfını TaskMgr kullanır.

Mac için Visual Studio 2019

Uyarı

Mac için Visual Studio Visual Basic dilini düzenlemeyi DESTEKLEMEZ; Visual Basic projeleri veya dosyaları oluşturmak için menü öğesi yoktur. Bir .vb açarsanız dil söz dizimi vurgulama, otomatik tamamlama veya IntelliSense yoktur.

Mac için Visual Studio 2019, Windows'da oluşturulan Visual Studio .NET Standard projelerini derleyebilir , böylece iOS uygulamaları bu projelere başvurabilir.

Visual Studio 2017 , Visual Basic projeleri oluşturamaz .

Özet

Bu makalede, Visual Studio ve .NET Standard kitaplıklarını kullanarak Xamarin uygulamalarında Visual Basic kodunun nasıl kullanıldığı gösterilmiştir. Xamarin, Visual Basic'i doğrudan desteklemese de Visual Basic'i bir .NET Standart kitaplığına derlemek, Visual Basic ile yazılmış kodun iOS ve Android uygulamalarına eklenmesini sağlar.