Kann ich eine private Immobilie über Reflektion festlegen?Ist es möglich, Privateigentum durch Reflektion zu setzen?
public abstract class Entity
{
private int _id;
private DateTime? _createdOn;
public virtual T Id
{
get { return _id; }
private set { ChangePropertyAndNotify(ref _id, value, x => Id); }
}
public virtual DateTime? CreatedOn
{
get { return _createdOn; }
private set { ChangePropertyAndNotify(ref _createdOn, value, x => CreatedOn); }
}
}
Ich habe versucht, die folgenden und es funktioniert nicht, wo t
eine Art Entity
darstellt:
var t = typeof(Entity);
var mi = t.GetMethod("set_CreatedOn", BindingFlags.Instance | BindingFlags.NonPublic);
Ich glaube, ich kann dies tun, aber ich kann es nicht funktioniert.
Ich weiß das Es ist spät, aber ich fand einen Bedarf für diesen Gedanken, ich würde mein "Warum" teilen. Ich musste die Unannehmlichkeiten einiger Software von Drittanbietern überwinden. Insbesondere verwendete ich die Crystal Reports ExportToStream-Methode. Wie diese Methode geschrieben wurde, war der Zugriff auf den internen Puffer des Streams nicht erlaubt. Um den Bericht an den Browser zu senden, musste ich den Stream in einen neuen Puffer (100K +) kopieren und dann senden. Indem ich das private '_exposable' Feld im stream Objekt auf 'true' setzte, konnte ich den internen Puffer direkt herausschicken und eine 100K + Zuweisung für jede Anfrage speichern. – Ray
Warum? Angenommen, Sie verfügen über private IDs für Ihre Id-Eigenschaften für alle Domänenobjekte, und Sie möchten Repository-Tests implementieren. Dann sollten Sie nur in Ihrem Repository-Testprojekt die Id-Eigenschaft festlegen können. – bounav
Ein weiteres Anwendungsszenario: Festlegen von automatisch generierten Feldern wie "Erstellungsdatum" beim Importieren von Daten. – ANeves