Xamarin Android 및 iOS의 Visual Basic
샘플 애플리케이션은 .NET Standard 라이브러리로 컴파일된 Visual Basic 코드를 Xamarin과 함께 사용하는 방법을 보여 줍니다. Android 및 iOS에서 실행되는 결과 앱의 몇 가지 스크린샷은 다음과 같습니다.
예제의 Android 및 iOS 프로젝트는 모두 C#으로 작성됩니다. 각 애플리케이션에 대한 사용자 인터페이스는 네이티브 기술로 빌드되는 반면 TodoItem
, 관리는 전체 데이터베이스가 아닌 데모용으로 XML 파일을 사용하여 Visual Basic .NET Standard 라이브러리에서 제공됩니다.
샘플 연습
이 가이드에서는 iOS 및 Android용 TaskyVB Xamarin 샘플에서 Visual Basic이 구현된 방법을 설명합니다.
참고 항목
이 가이드를 계속 진행하기 전에 Visual Basic 및 .NET Standard에 대한 지침을 검토합니다.
Visual Basic 지침을 사용하여 Xamarin.Forms를 참조하여 공유 사용자 인터페이스 Visual Basic 코드를 사용하여 앱을 빌드하는 방법을 확인합니다.
VisualBasicNetStandard
Visual Basic .NET Standard 라이브러리는 Windows의 Visual Studio에서만 만들 수 있습니다. 예제 라이브러리에는 다음 Visual Basic 파일에서 애플리케이션의 기본 사항이 포함되어 있습니다.
- TodoItem.vb
- TodoItemManager.vb
- TodoItemRepositoryXML.vb
- XmlStorage.vb
TodoItem.vb
이 클래스는 애플리케이션 전체에서 사용할 비즈니스 개체를 포함합니다. Visual Basic에서 정의되고 C#으로 작성된 Android 및 iOS 프로젝트와 공유됩니다.
클래스 정의는 다음과 같습니다.
Public Class TodoItem
Property ID() As Integer
Property Name() As String
Property Notes() As String
Property Done() As Boolean
End Class
이 샘플에서는 XML serialization 및 de-serialization을 사용하여 TodoItem 개체를 로드하고 저장합니다.
TodoItemManager.vb
Manager 클래스는 이식 가능한 코드에 대한 'API'를 제공합니다. 클래스에 대한 TodoItem
기본 CRUD 작업을 제공하지만 해당 작업의 구현은 제공하지 않습니다.
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
생성자는 IXmlStorage 인스턴스를 매개 변수로 사용합니다. 이렇게 하면 각 플랫폼이 고유한 작업 구현을 제공하면서 이식 가능한 코드에서 공유할 수 있는 다른 기능을 설명하도록 할 수 있습니다.
TodoItemRepository.vb
리포지토리 클래스에는 TodoItem 개체 목록을 관리하기 위한 논리가 포함되어 있습니다. 전체 코드는 아래에 나와 있습니다. 컬렉션에서 추가 및 제거될 때 TodoItems에서 고유한 ID 값을 관리하기 위한 논리가 기본 존재합니다.
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
참고 항목
이 코드는 매우 기본적인 데이터 스토리지 메커니즘의 예입니다. .NET Standard 라이브러리가 인터페이스에 대해 코딩하여 플랫폼별 기능에 액세스하는 방법을 보여 줍니다(이 경우 XML 파일 로드 및 저장). 프로덕션 품질 데이터베이스 대안이 아닙니다.
Android 및 iOS 애플리케이션 프로젝트
iOS
iOS 애플리케이션 TodoItemManager
에서 이 코드 조각과 XmlStorageImplementation
같이 AppDelegate.cs 파일에 생성됩니다. 처음 네 줄은 데이터가 저장될 파일의 경로를 작성하는 것입니다. 마지막 두 줄은 인스턴스화되는 두 클래스를 보여 줍니다.
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 애플리케이션 TodoItemManager
에서 이 코드 조각과 XmlStorageImplementation
같이 Application.cs 파일에 생성됩니다. 처음 세 줄은 데이터가 저장될 파일의 경로를 작성하는 것입니다. 마지막 두 줄은 인스턴스화되는 두 클래스를 보여 줍니다.
var xmlFilename = "TodoList.xml";
string libraryPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
var path = Path.Combine(libraryPath, xmlFilename);
TaskMgr = new TodoItemManager(path);
애플리케이션 코드의 나머지 부분에는 주로 사용자 인터페이스 및 클래스를 로드 하 고 저장 TodoItem
하는 클래스를 사용 하 여 TaskMgr
관련 됩니다.
Mac용 Visual Studio 2019
Warning
Mac용 Visual Studio Visual Basic 언어 편집을 지원하지 않습니다. Visual Basic 프로젝트 또는 파일을 만들기 위한 메뉴 항목이 없습니다. .vb 열면 언어 구문 강조 표시, 자동 완성 또는 IntelliSense가 없습니다.
Mac 용 Visual Studio 2019는 Windows에서 만든 Visual Studio .NET Standard 프로젝트를 컴파일할 수 있으므로 iOS 앱은 이러한 프로젝트를 참조할 수 있습니다.
Visual Studio 2017 은 Visual Basic 프로젝트를 전혀 빌드할 수 없습니다 .
요약
이 문서에서는 Visual Studio 및 .NET Standard 라이브러리를 사용하여 Xamarin 애플리케이션에서 Visual Basic 코드를 사용하는 방법을 보여 줍니다. Xamarin은 Visual Basic을 직접 지원하지 않지만 Visual Basic을 .NET Standard 라이브러리로 컴파일하면 Visual Basic으로 작성된 코드를 iOS 및 Android 앱에 포함할 수 있습니다.