1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
namespace Tools
{
/// <summary>
/// Stellt eine Reihe von Erweiterungsmethoden zur
/// Verfügung.
/// </summary>
public static class Extensions
{
/// <summary>
/// Kopiert die Eigenschaften eines Objektes
/// auf ein anderes.
/// </summary>
public static T CopyProperties<T>(this T source, T dest)
{
foreach (PropertyInfo prop in typeof(T).GetProperties())
{
if (prop.CanRead && prop.CanWrite)
{
prop.SetValue(dest, prop.GetValue(source, null), null);
}
}
return dest;
}
/// <summary>
/// Kopiert eine Liste.
/// </summary>
public static IEnumerable<T> CopyList<T>(this IEnumerable source)
{
List<T> retVal = new List<T>();
foreach (object obj in source)
{
try
{
retVal.Add((T)obj);
}
catch { };
}
return retVal;
}
/// <summary>
/// Gibt den Index eines Elements zurück.
/// </summary>
public static int GetIndexOf<T>(this IEnumerable<T> source, T item)
{
int counter = 0;
foreach (T obj in source)
{
if ((object)obj == (object)item)
return counter;
counter++;
}
return -1;
}
/// <summary>
/// Zählt die Vorkommnisse eines Objekts in einer Aufzählung.
/// </summary>
public static int CountContains<T>(this IEnumerable<T> source, T item)
{
int retVal = 0;
foreach (T obj in source)
{
if (obj.Equals(item))
retVal++;
}
return retVal;
}
}
}
|