Ich muss diesen Handler an eine RadListView-Spaltenerstellung anhängen, indem Sie dem Steuerelement eine DataSource hinzufügen.Anfügen Generische Methode Ereignishandler mit unbekanntem Typ
public void GenericColumnCreatingHandler<T>(object sender, ListViewColumnCreatingEventArgs e)
{
e.Column.Visible = BaseEntity<int>.MemberVisibility<T>
(e.Column.FieldName, TelerikPropertyVisibilityAttribute.VisibilityTypeEnum.BaseDetails);
e.Column.HeaderText = CaricaTestoLocale(e.Column.HeaderText, "Col_" + e.Column.HeaderText);
e.Column.BestFit();
e.Column.AutoSizeMode = ListViewBestFitColumnMode.AllCells;
}
Mein Problem ist, dass ich der Handler anhängen aus dieser anderen generischen Verfahren durchführen müssen:
private void PopulateRecord(TipoTabellaBase tipo)
{
Type generic = typeof(CommonTableService<>);
Type[] typeArgs = { tipo.Tipo };
var constructed = generic.MakeGenericType(typeArgs);
var instance = Activator.CreateInstance(constructed);
if (instance == null)
return;
MethodInfo getEntities = constructed.GetMethod("GetEntitiesWithNoParameters");
//getEntities = getEntities.MakeGenericMethod(typeArgs);
var result = (IEnumerable<BaseEntity<int>>)getEntities.Invoke(instance, null);
lvRecords.ColumnCreating += base.GenericColumnCreatingHandler<BaseEntity<int>>;
lvRecords.DataSource = result;
BestFit(lvRecords);
generic = null;
typeArgs = null;
constructed = null;
getEntities = null;
instance = null;
}
Die problematische Zeile ist diese:
lvRecords.ColumnCreating += base.GenericColumnCreatingHandler<BaseEntity<int>>
weil BaseEntity EF Basis Typ für alle Entitäten, aber dies ist nicht genug für die BaseEntity.MemberVisibility-Methode; Diese Methode muss den genauen Entitätstyp kennen, um die sichtbaren Eigenschaften (und natürlich die Rasterspalte) basierend auf einem bestimmten benutzerdefinierten Attribut festzulegen.
Frage ist: wie kann ich base.GenericColumnCreatingHandler wo T ist TipoTabellaBase tipo.Tipo (Typ) ohne zu wissen, Typ zur Entwurfszeit?
Jede Hilfe wäre sehr willkommen! Danke ist Fortschritt.
Daniel
"von dieser anderen generischen Methode" - 'PopulateRecord' ist * nicht * eine" generische Methode "(im C# Sinn). –
Ja O.R. Mapper, du hast Recht. Aber ich denke, das ist noch nicht das eigentliche Problem ... –