izlenecek yol: Visual Studio bir nesneyi kalıcı hale getirme (Visual Basic)
Tasarım zamanında bir nesnenin özelliklerini varsayılan değerlere ayarlayabilseniz de, nesne yok edildiğinde çalışma zamanında girilen tüm değerler kaybedilir. Nesneleri, değerleri depolamanızı ve nesnenin bir sonraki açılışında bunları almanızı sağlayan örnekler arasında bir nesnenin verilerini kalıcı hale getirmek için serileştirme kullanabilirsiniz.
Not
Visual Basic, bir ad veya sayı gibi basit verileri depolamak için My.Settings nesnesini kullanabilirsiniz. daha fazla bilgi için bkz. My. Ayarlar nesnesi.
Bu izlenecek yolda basit bir Loan nesne oluşturacak ve verilerini bir dosyaya sürdürmeye devam edersiniz. Daha sonra nesneyi yeniden oluşturduğunuzda dosyadaki verileri buradan alırsınız.
Önemli
Bu örnek, dosya zaten yoksa yeni bir dosya oluşturur. Bir uygulamanın bir dosya oluşturması gerekiyorsa, bu uygulamanın Create klasör için izni olması gerekir. İzinler, erişim denetim listeleri kullanılarak ayarlanır. Dosya zaten varsa, uygulamanın daha az izne sahip yalnızca Write izne ihtiyacı vardır. Mümkün olduğunda, dağıtım sırasında dosyanın oluşturulması ve yalnızca Read tek bir dosyaya (bir klasör için Izin oluşturmak yerine) izin verilmesi daha güvenlidir. Ayrıca, Kullanıcı klasörlerine veri yazmak, kök klasör veya Program Files klasöründen daha güvenlidir.
Önemli
Bu örnek, verileri bir ikili dosya halinde depolar. Bu biçimler, parolalar veya kredi kartı bilgileri gibi hassas veriler için kullanılmamalıdır.
Not
Gördüğünüz iletişim kutuları ve menü komutları, etkin ayarlarınıza ve ürün sürümüne bağlı olarak Yardım menüsünde açıklanana göre farklılık gösterebilir. ayarlarınızı değiştirmek için araçlar menüsünden içeri aktar ve dışarı aktar Ayarlar ' a tıklayın. daha fazla bilgi için bkz. Visual Studio ıde 'yi kişiselleştirme.
Kredi nesnesi oluşturma
İlk adım, sınıfını Loan kullanan bir sınıf ve test uygulaması oluşturmaktır.
Kredi sınıfı oluşturmak için
Yeni bir sınıf kitaplığı projesi oluşturun ve "Kreclass" olarak adlandırın. Daha fazla bilgi için bkz. çözüm ve proje oluşturma.
Çözüm Gezgini, Class1 dosyası için kısayol menüsünü açın ve Yeniden Adlandır' ı seçin. Dosyayı olarak yeniden adlandırın
Loanve ENTER 'a basın. Dosyanın yeniden adlandırılması de sınıfı olarak yeniden adlandırılacaktırLoan.Sınıfına aşağıdaki ortak üyeleri ekleyin:
Public Class Loan Implements System.ComponentModel.INotifyPropertyChanged Public Property LoanAmount As Double Public Property InterestRate As Double Public Property Term As Integer Private p_Customer As String Public Property Customer As String Get Return p_Customer End Get Set(ByVal value As String) p_Customer = value RaiseEvent PropertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs("Customer")) End Set End Property Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler _ Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged Public Sub New(ByVal loanAmount As Double, ByVal interestRate As Double, ByVal term As Integer, ByVal customer As String) Me.LoanAmount = loanAmount Me.InterestRate = interestRate Me.Term = term p_Customer = customer End Sub End Class
Ayrıca, sınıfını kullanan basit bir uygulama da oluşturmanız gerekecektir Loan .
Test uygulaması oluşturmak için
çözümünüze Windows Forms bir uygulama projesi eklemek için dosya menüsünde ekle,yeni Project öğesini seçin.
yeni Project ekle iletişim kutusunda, Windows Forms uygulama' yı seçin ve
LoanAppprojenin adı olarak girin ve ardından iletişim kutusunu kapatmak için tamam ' ı tıklatın.Çözüm Gezgini, kremi uygulama projesini seçin.
Project menüsünde, başlangıç Project olarak ayarla' yı seçin.
Project menüsünde başvuru ekle' yi seçin.
Başvuru Ekle iletişim kutusunda, Projeler sekmesini seçin ve sonra ödünç sınıfı projesini seçin.
Tamam’a tıklayarak iletişim kutusunu kapatın.
Tasarımcıda, forma dört denetim ekleyin TextBox .
Kod Düzenleyicisi'ne şu kodu ekleyin:
Private WithEvents TestLoan As New LoanClass.Loan(10000.0, 0.075, 36, "Neil Black") Private Sub Form1_Load() Handles MyBase.Load TextBox1.Text = TestLoan.LoanAmount.ToString TextBox2.Text = TestLoan.InterestRate.ToString TextBox3.Text = TestLoan.Term.ToString TextBox4.Text = TestLoan.Customer End SubPropertyChangedAşağıdaki kodu kullanarak forma olay işleyicisi ekleyin:Public Sub CustomerPropertyChanged( ByVal sender As Object, ByVal e As System.ComponentModel.PropertyChangedEventArgs ) Handles TestLoan.PropertyChanged MsgBox(e.PropertyName & " has been changed.") End Sub
Bu noktada, uygulamayı derleyip çalıştırabilirsiniz. Sınıfın varsayılan değerlerinin Loan metin kutularında göründüğünü unutmayın. 7,5 olan faiz oranı değerini 7,1 olarak değiştirmeyi deneyin ve sonra uygulamayı kapatıp yeniden çalıştırın. değer varsayılan olarak 7,5 ' ye döner.
Gerçek dünyada, faiz oranları düzenli aralıklarla değişir, ancak uygulama her çalıştırıldığında her zaman gerekli değildir. Uygulamanın her çalıştığında, kullanıcının faiz oranını güncelleştirmesini sağlamak yerine, uygulamanın örnekleri arasındaki en son faiz oranını korumak daha iyidir. Bir sonraki adımda, yalnızca kredi sınıfına serileştirme ekleyerek bunu yapacaksınız.
Nesneyi kalıcı hale getirmek için serileştirme kullanma
Kredi sınıfının değerlerini kalıcı hale getirmek için, önce sınıfı özniteliğiyle işaretlemeniz gerekir Serializable .
Bir sınıfı seri hale getirilebilir olarak işaretlemek için
Kredi sınıfının sınıf bildirimini aşağıdaki gibi değiştirin:
<Serializable()> Public Class Loan
SerializableÖzniteliği derleyiciye sınıftaki her şeyin bir dosyaya kalıcı olarak devam edebilir olduğunu söyler. PropertyChangedolay bir Windows Form nesnesi tarafından işlendiği için serileştirilemiyor. NonSerializedÖzniteliği kalıcı olmaması gereken sınıf üyelerini işaretlemek için kullanılabilir.
Bir üyenin serileştirilmesine engel olmak için
PropertyChangedOlay bildirimini aşağıdaki gibi değiştirin:<NonSerialized()> Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler _ Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
Sonraki adım, ödünç uygulama uygulamasına serileştirme kodu eklemektir. Sınıfını seri hale getirmek ve bir dosyaya yazmak için, System.IO ve System.Xml.Serialization ad alanlarını kullanırsınız. Tam nitelikli adları yazmadan kaçınmak için, gerekli sınıf kitaplıklarına başvurular ekleyebilirsiniz.
Ad alanlarına başvurular eklemek için
Aşağıdaki deyimlerini sınıfının üst kısmına ekleyin
Form1:Imports System.IO Imports System.Runtime.Serialization.Formatters.BinaryBu durumda, nesneyi ikili bir biçimde kaydetmek için ikili bir biçimlendirici kullanıyorsunuz.
Sonraki adım, nesne oluşturulduğunda nesnenin serisini kaldırmak için kod eklemektir.
Bir nesnenin serisini kaldırmak için
Seri hale getirilen verilerin dosya adı için sınıfa bir sabit ekleyin.
Const FileName As String = "..\..\SavedLoan.bin"Form1_LoadOlay yordamındaki kodu aşağıdaki gibi değiştirin:Private WithEvents TestLoan As New LoanClass.Loan(10000.0, 0.075, 36, "Neil Black") Private Sub Form1_Load() Handles MyBase.Load If File.Exists(FileName) Then Dim TestFileStream As Stream = File.OpenRead(FileName) Dim deserializer As New BinaryFormatter TestLoan = CType(deserializer.Deserialize(TestFileStream), LoanClass.Loan) TestFileStream.Close() End If AddHandler TestLoan.PropertyChanged, AddressOf Me.CustomerPropertyChanged TextBox1.Text = TestLoan.LoanAmount.ToString TextBox2.Text = TestLoan.InterestRate.ToString TextBox3.Text = TestLoan.Term.ToString TextBox4.Text = TestLoan.Customer End SubÖnce dosyanın var olduğunu denetlemeniz gerektiğini unutmayın. Varsa, Stream ikili dosyayı okumak için bir sınıf ve BinaryFormatter dosyayı çevirecek bir sınıf oluşturun. Akış türünden kredi nesne türüne de dönüştürmeniz gerekir.
Sonra, metin kutularına girilen verileri sınıfa kaydetmek için kod eklemeniz gerekir Loan ve ardından sınıfı bir dosyaya serileştirilmelidir.
Verileri kaydetmek ve sınıfı seri hale getirmek için
Olay yordamına aşağıdaki kodu ekleyin
Form1_FormClosing:Private Sub Form1_FormClosing() Handles MyBase.FormClosing TestLoan.LoanAmount = CDbl(TextBox1.Text) TestLoan.InterestRate = CDbl(TextBox2.Text) TestLoan.Term = CInt(TextBox3.Text) TestLoan.Customer = TextBox4.Text Dim TestFileStream As Stream = File.Create(FileName) Dim serializer As New BinaryFormatter serializer.Serialize(TestFileStream, TestLoan) TestFileStream.Close() End Sub
Bu noktada, uygulamayı derleyip çalıştırabilirsiniz. Başlangıçta, varsayılan değerler metin kutularında görünür. Değerleri değiştirmeyi deneyin ve dördüncü metin kutusuna bir ad girin. Uygulamayı kapatın ve sonra yeniden çalıştırın. Yeni değerlerin artık metin kutularında göründüğünü unutmayın.