Ich habe den folgenden Code (ein einfaches Beispiel für ein komplexeres Projekt), wo ich eine statische "Master" -Liste von Objekt-typisierten Listen habe.Statische Liste innerhalb einer generischen Klasse
Wenn Sie durch den Code gehen, erwartete ich, dass, wenn der zweite referenzManager3-Typ über den Konstruktor erstellt wird, die _masterList dann sowohl die String- als auch die Objektliste enthält. Allerdings nicht.
Ich nehme an, dies liegt daran, dass jede Instanz von ReferenceManager3 aufgrund der generischen Typdefinition tatsächlich unterschiedliche Klassentypen sind. Habe ich Recht, das zu denken?
Wie kann ich das schaffen?
class Program
{
static void Main(string[] args)
{
ReferenceManager3<string> StringManager = new ReferenceManager3<string>();
ReferenceManager3<object> IntManager = new ReferenceManager3<object>();
}
}
class ReferenceManager3<T> where T : class //IReferenceTracking
{
// Static list containing a reference to all Typed Lists
static List<IList> _masterList = new List<IList>();
// Object Typed List
private List<T> _list = null;
public ReferenceManager3()
{
// Create the new Typed List
_list = new List<T>();
// Add it to the Static Master List
_masterList.Add(_list); // <<< break here on the second call.
}
}
Aus Interesse, warum ist das etwas, was Sie tun möchten? Ich denke, es könnte eine bessere Alternative geben, wenn Sie einen Kontext bereitstellen können. – TheInnerLight
Ein Workaround wäre, die '_masterlist' in einer anderen Klasse zu platzieren. –
@TheGrovesy Sie haben klar angenommen, dass _masterList für beide Objekte die gleiche Instanz gewesen wäre, jedoch wird es verschiedene statische Objekte für verschiedene Instanzen Ihrer generischen Klasse geben. Was willst du erreichen? – Phate01