DeveelDB  20151217
complete SQL database system, primarly developed for .NET/Mono frameworks
Static Public Member Functions | Static Private Member Functions | List of all members
Deveel.Data.Linq.TypeSystem Class Reference

Static Public Member Functions

static Type GetElementType (Type seqType)
 

Static Private Member Functions

static Type FindIEnumerable (Type seqType)
 

Detailed Description

Definition at line 21 of file TypeSystem.cs.

Member Function Documentation

static Type Deveel.Data.Linq.TypeSystem.FindIEnumerable ( Type  seqType)
inlinestaticprivate

Definition at line 31 of file TypeSystem.cs.

31  {
32  if (seqType == null || seqType == typeof(string))
33  return null;
34 
35  if (seqType.IsArray)
36  return typeof(IEnumerable<>).MakeGenericType(seqType.GetElementType());
37 
38  if (seqType.IsGenericType) {
39  foreach (Type arg in seqType.GetGenericArguments()) {
40  Type ienum = typeof(IEnumerable<>).MakeGenericType(arg);
41  if (ienum.IsAssignableFrom(seqType)) {
42  return ienum;
43  }
44  }
45  }
46 
47  Type[] ifaces = seqType.GetInterfaces();
48 
49  if (ifaces.Length > 0) {
50  foreach (Type iface in ifaces) {
51  Type ienum = FindIEnumerable(iface);
52  if (ienum != null) return ienum;
53  }
54  }
55 
56  if (seqType.BaseType != null && seqType.BaseType != typeof(object)) {
57  return FindIEnumerable(seqType.BaseType);
58  }
59 
60  return null;
61  }
A user-defined TYPE that holds complex objects in a database column.
static Type FindIEnumerable(Type seqType)
Definition: TypeSystem.cs:31
static Type Deveel.Data.Linq.TypeSystem.GetElementType ( Type  seqType)
inlinestatic

Definition at line 22 of file TypeSystem.cs.

22  {
23  Type ienum = FindIEnumerable(seqType);
24 
25  if (ienum == null)
26  return seqType;
27 
28  return ienum.GetGenericArguments()[0];
29  }
A user-defined TYPE that holds complex objects in a database column.
static Type FindIEnumerable(Type seqType)
Definition: TypeSystem.cs:31

The documentation for this class was generated from the following file: