Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
DataReaderContainer.cs
Go to the documentation of this file.
3
5
6internal abstract class DataReaderContainer
7{
9 {
11
12 internal override bool ReturnProviderSpecificTypes => true;
13
14 protected override int VisibleFieldCount
15 {
16 get
17 {
18 int visibleFieldCount = _providerSpecificDataReader.VisibleFieldCount;
19 if (0 > visibleFieldCount)
20 {
21 return 0;
22 }
23 return visibleFieldCount;
24 }
25 }
26
27 internal ProviderSpecificDataReader(IDataReader dataReader, DbDataReader dbDataReader)
28 : base(dataReader)
29 {
30 _providerSpecificDataReader = dbDataReader;
32 }
33
34 [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.PublicProperties)]
35 internal override Type GetFieldType(int ordinal)
36 {
38 }
39
40 internal override int GetValues(object[] values)
41 {
43 }
44 }
45
47 {
48 internal override bool ReturnProviderSpecificTypes => false;
49
50 protected override int VisibleFieldCount
51 {
52 get
53 {
54 int fieldCount = _dataReader.FieldCount;
55 if (0 > fieldCount)
56 {
57 return 0;
58 }
59 return fieldCount;
60 }
61 }
62
64 : base(dataReader)
65 {
67 }
68
69 [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.PublicProperties)]
70 internal override Type GetFieldType(int ordinal)
71 {
72 return _dataReader.GetFieldType(ordinal);
73 }
74
75 internal override int GetValues(object[] values)
76 {
78 }
79 }
80
81 protected readonly IDataReader _dataReader;
82
83 protected int _fieldCount;
84
85 internal int FieldCount => _fieldCount;
86
87 internal abstract bool ReturnProviderSpecificTypes { get; }
88
89 protected abstract int VisibleFieldCount { get; }
90
91 internal static DataReaderContainer Create(IDataReader dataReader, bool returnProviderSpecificTypes)
92 {
93 if (returnProviderSpecificTypes && dataReader is DbDataReader dbDataReader)
94 {
95 return new ProviderSpecificDataReader(dataReader, dbDataReader);
96 }
97 return new CommonLanguageSubsetDataReader(dataReader);
98 }
99
100 protected DataReaderContainer(IDataReader dataReader)
101 {
102 _dataReader = dataReader;
103 }
104
105 [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.PublicProperties)]
106 internal abstract Type GetFieldType(int ordinal);
107
108 internal abstract int GetValues(object[] values);
109
110 internal string GetName(int ordinal)
111 {
112 string name = _dataReader.GetName(ordinal);
113 if (name == null)
114 {
115 return "";
116 }
117 return name;
118 }
119
121 {
123 }
124
125 internal bool NextResult()
126 {
127 _fieldCount = 0;
129 {
131 return true;
132 }
133 return false;
134 }
135
136 internal bool Read()
137 {
138 return _dataReader.Read();
139 }
140}
virtual int GetProviderSpecificValues(object[] values)
virtual Type GetProviderSpecificFieldType(int ordinal)
ProviderSpecificDataReader(IDataReader dataReader, DbDataReader dbDataReader)
static DataReaderContainer Create(IDataReader dataReader, bool returnProviderSpecificTypes)
DataTable? GetSchemaTable()
string GetName(int i)
Type GetFieldType(int i)
int GetValues(object[] values)