Regular-Schnittstelle:Dekorierermuster und Generika
public interface IComputation
{
void Reset();
float GetValue1();
float GetValue2();
}
Generisches Interface:
public interface IComputation<T> : IComputation where T : IComputation
{
T Proxy { get; set; }
}
Jetzt für die Klassen:
public abstract class Computation<T> : IComputation<T> where T : IComputation
{
public T Proxy { get; set; }
}
Class 'ComputationCache' ist eine ‚eingerichtet“ Berechnung:
Um die dekorierten Berechnung zu initialisieren, habe ich versucht, die folgenden:
public ComputationCache(IComputation<T> proxy)
{
Proxy = (T) proxy;
proxy.Proxy = this;
}
..., die den folgenden Fehler "gibt:
Cannot convert source type 'ComputationCache' to target type 'T'.
Kann jemand sagen, ob es besser ist, zu verwenden:
ComputationCache<T> : IComputation where T : IComputation
vs
ComputationCache<T> : IComputation<T> where T : IComputation
Ihre Abstraktion sieht etwas überkillt – Rahul
Ich muss sagen, dass Sie mich verloren haben –
@Rahul. Die oben gezeigten Klassen sind abstrakt und werden durch mehrere Berechnungen sowie durch entsprechende "ComputationCache", die von der Basis-Cache-Klasse abgeleitet sind, unterklassifiziert. Ich versuche, wiederholtes Umwandeln der Eigenschaft "Proxy" auf den niedrigeren Ebenen zu vermeiden – alhazen