Code: Select all
static object GetZero(Type t)
{
// If t implements INumberBase, then return INumberBase.Zero
// Otherwise, throw some arbitrary Exception
}
Code: Select all
static object GetZero(Type t)
{
return t
.GetInterfaces()
.Single(x => x.IsGenericType && !x.IsGenericTypeDefinition && x.GetGenericTypeDefinition() == typeof(INumberBase))
.GetProperty("Zero", BindingFlags.Public | BindingFlags.Static)
.GetValue(null);
}
System.BadImageFormatException : Bad IL format.
bei System.Reflection.MethodInvoker.Invoke( Object obj, IntPtr* args, BindingFlags invokeAttr)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[]-Parameter, CultureInfo-Kultur)
at System.Reflection.PropertyInfo.GetValue(Object obj)
Warum ist das so? Diese Implementierung wird ausgelöst?
Gibt es eine andere Möglichkeit, dies über Reflektion zu implementieren?
Bearbeiten:
Ich kann dies umgehen, indem ich Folgendes hinzufüge eine statische Methode als folgt
Code: Select all
static T Zero() where T : INumberBase
{
return T.Zero;
}