Ho un delegato generico implementato in una classe singleton come questa;C# errore di delegato generico Impossibile collegarsi al metodo di destinazione perché la sua firma è
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("");
}
Il punto che quando invoco il delegato ricevo questo errore:
Cannot bind to the target method because its signature or security transparency is not compatible with that of the delegate type.
La classe che chiama il delegato chiamano in questo modo:
public static void loadCache<T>() where T : class
{
var aa = BBCacheMethods.MethodToInvoke<T>();
}
non ho trovato fuori perché ricevo un tale errore, ogni aiuto è apprezzato.
potresti avere ragione funziona benissimo, ma sono alla ricerca di questa firma T GetResUstPolitikaBelgeTurlerisForCache() lì per non voglio decorare l'intera classe con T. –
MuhanadY
Vedere il mio aggiornamento. Si potrebbe invece inserire il codice richiesto in una classe separata e aggregarlo dalla classe singleton in modo da non dover "decorare" la classe singleton con argomenti di tipo generico. – helb