object xamarin.ios type-conversion nsobject

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.