Monotouch: convierte un objeto a NSObject
xamarin.ios type-conversion (3)
¿Cómo es posible convertir una instancia de Object a NSObject one?
He creado un NSDictionary desde
NSDictionary.FromObjectAndKey();
Este método quiere un NSObject pero tengo un objeto personalizado para pasar:
int key = 2341;
var val = new MyClass();
NSDictionary.FromObjectAndKey(val, key); // obviously it does not work!!
¿Cómo arreglar esto? Gracias de antemano.
Esta es la forma:
NSDictionary.FromObjectAndKey(NSObject.FromObject(val), NSObject.FromObject(key));
La solución más fácil que pude encontrar fue envolver el objeto .Net en un objeto NSO, y luego desenvolverlo según sea necesario.
public class NSObjectWrapper : NSObject
{
public object Context;
public NSObjectWrapper (object obj) : base()
{
this.Context = obj;
}
public static NSObjectWrapper Wrap(object obj)
{
return new NSObjectWrapper(obj);
}
}
Ejemplo de uso:
// wrap
var myNSObj = NSObjectWrapper.Wrap(new MyClass());
// unwrap
var myObj = myNSObj.Context as MyClass;
No puede convertir un objeto arbitrario en un NSObject. El NSObject.FromObject intentará envolver los tipos de datos comunes como números, cadenas, rectángulos, puntos, transformaciones y un puñado de otros tipos de .NET en sus tipos de NSObject equivalentes.
En su ejemplo particular, "MyClass" tendría que derivar de un NSObject antes de poder usarlo en el NSDictionary.