diff --git a/LINQ/LINQ/Framewok/Provider/Registry/TypeRegistry.vb b/LINQ/LINQ/Framewok/Provider/Registry/TypeRegistry.vb index 99bbf90..659cc8c 100644 --- a/LINQ/LINQ/Framewok/Provider/Registry/TypeRegistry.vb +++ b/LINQ/LINQ/Framewok/Provider/Registry/TypeRegistry.vb @@ -1,47 +1,47 @@ #Region "Microsoft.VisualBasic::c39bd12aa91ca074ef1e3b66376790c3, LINQ\LINQ\Framewok\Provider\Registry\TypeRegistry.vb" - ' Author: - ' - ' asuka (amethyst.asuka@gcmodeller.org) - ' xie (genetics@smrucc.org) - ' xieguigang (xie.guigang@live.com) - ' - ' Copyright (c) 2018 GPL3 Licensed - ' - ' - ' GNU GENERAL PUBLIC LICENSE (GPL3) - ' - ' - ' This program is free software: you can redistribute it and/or modify - ' it under the terms of the GNU General Public License as published by - ' the Free Software Foundation, either version 3 of the License, or - ' (at your option) any later version. - ' - ' This program is distributed in the hope that it will be useful, - ' but WITHOUT ANY WARRANTY; without even the implied warranty of - ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - ' GNU General Public License for more details. - ' - ' You should have received a copy of the GNU General Public License - ' along with this program. If not, see . - - - - ' /********************************************************************************/ - - ' Summaries: - - ' Class TypeRegistry - ' - ' Properties: DefaultFile, SDK, typeDefs - ' - ' Function: __parsingEntry, Find, GetHandle, Load, LoadAssembly - ' LoadDefault, ParsingEntry, Register, Save - ' - ' Sub: InstallCurrent - ' - ' - ' /********************************************************************************/ +' Author: +' +' asuka (amethyst.asuka@gcmodeller.org) +' xie (genetics@smrucc.org) +' xieguigang (xie.guigang@live.com) +' +' Copyright (c) 2018 GPL3 Licensed +' +' +' GNU GENERAL PUBLIC LICENSE (GPL3) +' +' +' This program is free software: you can redistribute it and/or modify +' it under the terms of the GNU General Public License as published by +' the Free Software Foundation, either version 3 of the License, or +' (at your option) any later version. +' +' This program is distributed in the hope that it will be useful, +' but WITHOUT ANY WARRANTY; without even the implied warranty of +' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +' GNU General Public License for more details. +' +' You should have received a copy of the GNU General Public License +' along with this program. If not, see . + + + +' /********************************************************************************/ + +' Summaries: + +' Class TypeRegistry +' +' Properties: DefaultFile, SDK, typeDefs +' +' Function: __parsingEntry, Find, GetHandle, Load, LoadAssembly +' LoadDefault, ParsingEntry, Register, Save +' +' Sub: InstallCurrent +' +' +' /********************************************************************************/ #End Region @@ -49,6 +49,7 @@ Imports System.Reflection Imports System.Text Imports System.Xml.Serialization Imports Microsoft.VisualBasic.ComponentModel +Imports Microsoft.VisualBasic.Language Imports Microsoft.VisualBasic.Linq Imports sciBASIC.ComputingServices.Linq.Framework.Provider @@ -59,7 +60,7 @@ Namespace Framework.Provider ''' (起始这个模块就是相当于一个类型缓存而已,因为程序可以直接读取dll文件里面的内容,但是直接读取的方法会造成性能下降,所以需要使用这个对象来缓存所需要的类型数据) ''' ''' - Public Class TypeRegistry : Inherits ITextFile + Public Class TypeRegistry : Implements IFileReference Implements IDisposable Public Property typeDefs As TypeEntry() @@ -232,13 +233,47 @@ NEWLY: Dim nlibs As New TypeRegistry With { End Function Public Shared ReadOnly Property DefaultFile As String = App.ProductSharedDIR & "/Linq.Entity.Xml" + Public Property FilePath As String Implements IFileReference.FilePath Public Shared Function LoadDefault() As TypeRegistry Return TypeRegistry.Load(DefaultFile) End Function - Public Overrides Function Save(Optional FilePath As String = "", Optional Encoding As Encoding = Nothing) As Boolean - Return Me.GetXml.SaveTo(getPath(FilePath), throwEx:=False, encoding:=Encoding) + Public Function Save(Optional FilePath As String = "", Optional Encoding As Encoding = Nothing) As Boolean + Return Me.GetXml.SaveTo(FilePath Or Me.FilePath.When(FilePath.StringEmpty), throwEx:=False, encoding:=Encoding) End Function + +#Region "IDisposable Support" + Private disposedValue As Boolean ' To detect redundant calls + + ' IDisposable + Protected Overridable Sub Dispose(disposing As Boolean) + If Not disposedValue Then + If disposing Then + ' TODO: dispose managed state (managed objects). + Call Save() + End If + + ' TODO: free unmanaged resources (unmanaged objects) and override Finalize() below. + ' TODO: set large fields to null. + End If + disposedValue = True + End Sub + + ' TODO: override Finalize() only if Dispose(disposing As Boolean) above has code to free unmanaged resources. + 'Protected Overrides Sub Finalize() + ' ' Do not change this code. Put cleanup code in Dispose(disposing As Boolean) above. + ' Dispose(False) + ' MyBase.Finalize() + 'End Sub + + ' This code added by Visual Basic to correctly implement the disposable pattern. + Public Sub Dispose() Implements IDisposable.Dispose + ' Do not change this code. Put cleanup code in Dispose(disposing As Boolean) above. + Dispose(True) + ' TODO: uncomment the following line if Finalize() is overridden above. + ' GC.SuppressFinalize(Me) + End Sub +#End Region End Class End Namespace