Was.OrcSearch – Blame information for rev 5
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
5 | office | 1 | using System; |
2 | using System.Collections; |
||
3 | using System.Collections.Generic; |
||
4 | |||
5 | namespace Was.OrcSearch.Services.Extensions |
||
6 | { |
||
7 | public static class SearchServiceExtensions |
||
8 | { |
||
9 | /// <summary> |
||
10 | /// Convert an object to an enumeration of strings. |
||
11 | /// </summary> |
||
12 | /// <param name="instance">the object to convert</param> |
||
13 | /// <returns>a series of strings</returns> |
||
14 | public static IEnumerable<string> Stringify(this object instance) |
||
15 | { |
||
16 | if (instance == null) |
||
17 | yield break; |
||
18 | |||
19 | // Support primitive types and strings. |
||
20 | var instanceType = instance.GetType(); |
||
21 | if (instanceType.IsPrimitive|| instance is string) |
||
22 | { |
||
23 | yield return instance.ToString(); |
||
24 | yield break; |
||
25 | } |
||
26 | |||
27 | // Support for arrays. |
||
28 | if (instance is IList list) |
||
29 | { |
||
30 | foreach (var element in list) |
||
31 | { |
||
32 | foreach (var item in Stringify(element)) |
||
33 | { |
||
34 | yield return item; |
||
35 | } |
||
36 | } |
||
37 | } |
||
38 | } |
||
39 | } |
||
40 | } |