Ich habe einen generischen Delegaten, der in einer Singleton-Klasse wie diesem implementiert ist;C# generischer Delegiertenfehler Kann nicht an die Zielmethode binden, da seine Signatur
public class BBCacheMethods
{
private static BBCacheMethods instance;
private BBCacheMethods() { }
public static BBCacheMethods Instance
{
get
{
if (instance == null)
{
instance = new BBCacheMethods();
}
return instance;
}
}
public T GetResUstPolitikaBelgeTurlerisForCache<T>() where T:class
{
return null;
}
public delegate T MethodToInvokeDelegate<T>();
public static MethodToInvokeDelegate<T> MethodToInvoke<T>() where T : class
{
MethodInfo method = Instance
.GetType()
.GetMethod("GetResUstPolitikaBelgeTurlerisForCache");
if (null != method)
{
return (MethodToInvokeDelegate<T>)Delegate.CreateDelegate(
typeof(MethodToInvokeDelegate<T>),
Instance,
method);
}
else
throw new FaultException("");
}
Der Punkt, dass, wenn ich die Delegaten rufe ich diese Fehlermeldung:
Cannot bind to the target method because its signature or security transparency is not compatible with that of the delegate type.
Die Klasse, die die Delegierten auf diese Weise rufen ruft:
public static void loadCache<T>() where T : class
{
var aa = BBCacheMethods.MethodToInvoke<T>();
}
ich nicht gefunden Warum bekomme ich solch einen Fehler, jede Hilfe wird geschätzt.
Sie vielleicht Recht, es funktioniert gut, aber bin auf der Suche für diese Unterschrift T GetResUstPolitikaBelgeTurlerisForCache() da ich die ganze Klasse nicht mit T. –
MuhanadY
dekorieren will Siehe mein Update. Sie könnten stattdessen den erforderlichen Code in eine separate Klasse einfügen und ihn aus Ihrer Singleton-Klasse aggregieren, sodass Sie Ihre Singleton-Klasse nicht mit generischen Typargumenten "dekorieren" müssen. – helb