1 #Region "Microsoft.VisualBasic::cc7bae28bcf78e96530f15826c60acef, Microsoft.VisualBasic.Core\ComponentModel\File\XmlDataModel.vb"
2
3     ' Author:
4     
5     '       asuka (amethyst.asuka@gcmodeller.org)
6     '       xie (genetics@smrucc.org)
7     '       xieguigang (xie.guigang@live.com)
8     
9     ' Copyright (c) 2018 GPL3 Licensed
10     
11     
12     ' GNU GENERAL PUBLIC LICENSE (GPL3)
13     
14     
15     ' This program is free software: you can redistribute it and/or modify
16     ' it under the terms of the GNU General Public License as published by
17     ' the Free Software Foundation, either version 3 of the License, or
18     ' (at your option) any later version.
19     
20     ' This program is distributed in the hope that it will be useful,
21     ' but WITHOUT ANY WARRANTY; without even the implied warranty of
22     ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23     ' GNU General Public License for more details.
24     
25     ' You should have received a copy of the GNU General Public License
26     ' along with this program. If not, see <http://www.gnu.org/licenses/>.
27
28
29
30     ' /********************************************************************************/
31
32     ' Summaries:
33
34     '     Class XmlDataModel
35     
36     '         Properties: TypeComment
37     
38     '         FunctionGetTypeReferenceComment
39     
40     
41     ' /********************************************************************************/
42
43 #End Region
44
45 Imports System.Runtime.CompilerServices
46 Imports System.Runtime.Serialization
47 Imports System.Web.Script.Serialization
48 Imports System.Xml
49 Imports System.Xml.Serialization
50
51 Namespace ComponentModel
52
53     Public MustInherit Class XmlDataModel
54
55         ''' <summary>
56         ''' ReadOnly, Data model type tracking use Xml Comment.
57         ''' </summary>
58         ''' <returns></returns>
59         '''
60         <DataMember>
61         <IgnoreDataMember>
62         <ScriptIgnore>
63         <SoapIgnore>
64         <XmlAnyElement>
65         Public Property TypeComment As XmlComment
66             <MethodImpl(MethodImplOptions.AggressiveInlining)>
67             Get
68                 Return GetTypeReferenceComment()
69             End Get
70             Set(value As XmlComment)
71                 Do Nothing
72                 ' 2018-6-5 this xml comment node cause bug when using xml deserialization
73             End Set
74         End Property
75
76         Private Function GetTypeReferenceComment() As XmlComment
77             Dim modelType As Type = Me.GetType
78             Dim fullName$ = modelType.FullName
79             Dim assembly$ = modelType.Assembly.FullName
80             Dim trace$ = vbCrLf &
81                 "     model:    " & fullName & vbCrLf &
82                 "     assembly: " & assembly & vbCrLf &
83                 "  "
84
85             Return New XmlDocument().CreateComment(trace)
86         End Function
87     End Class
88 End Namespace