Ich habe derzeit Generics in C gelernt und erforscht, aber ich habe Probleme damit, die einmal erstellte Methode zu verwenden.Generische Methode kann nicht zugegriffen werden
Ich habe versucht:
public class myTestClass
{
class example
{
public static DataTable LINQtoDataTable<T>(IEnumerable<T> data)
{
DataTable dt = new DataTable();
PropertyInfo[] objectProps = null; // Reflection
if (data == null) return null;
foreach (T record in data)
{
if (objectProps == null) objectProps = ((Type)data.GetType()).GetProperties();
foreach (PropertyInfo pi in objectProps)
{
Type collumnType = pi.PropertyType;
if ((collumnType.IsGenericType) && (collumnType.GetGenericTypeDefinition() == typeof(Nullable<>))) collumnType = collumnType.GetGenericArguments()[0];
dt.Columns.Add(new DataColumn(pi.Name, collumnType));
}
}
return dt;
}
}
example ex { get; set; }
public myTestClass()
{
this.ex = new example();
}
}
Aber wenn ich (in C# Form) tun:
// Namespace area
myTestClass test;
// Main Method
test = new myTestClass();
test.LINQtoDataTable()
nicht kommen oder existiert. Kann mir bitte jemand helfen? Ich bin verwirrt, warum wird dies nicht angezeigt, da ich die Methode public'd und instanziert die Klasse es im Inneren ist :(
schätzten & Dank im Voraus.
'LINQtoDataTable' ist eine statische Methode in einer privaten geschachtelten Klasse, so dass' test.LINQtoDataTable' nicht funktioniert. – rbm
Sie brauchen es auch als eine statische Klasse (wo der Datenparameter auf diese gesetzt werden muss), können Sie Erweiterungsmethoden ein bisschen erforschen :) – Icepickle