Monotouch:将Object转换为NSObject

问题描述

| 如何将一个Object实例转换为NSObject一个? 我从创建了一个NSDictionary
NSDictionary.FromObjectAndKey();
方法想要一个NSObject,但是我有要传入的自定义对象:
int key = 2341;
var val = new MyClass();
NSDictionary.FromObjectAndKey(val,key); // obvIoUsly it does not work!!
如何解决?先感谢您。     

解决方法

您不能将任意对象转换为NSObject。 NSObject.FromObject会尝试将常见的数据类型(例如数字,字符串,矩形,点,变换和一些其他.NET类型)包装为等效的NSObject类型。 在您的特定示例中,\“ MyClass \”必须先从NSObject派生,然后才能在NSDictionary中使用它。     ,我能找到的最简单的解决方案是将.Net对象包装在NSObject中,然后根据需要解包。
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);
    }
}
使用示例:
// wrap
var myNSObj = NSObjectWrapper.Wrap(new MyClass());
// unwrap
var myObj = myNSObj.Context as MyClass;
    ,这是这样的:
NSDictionary.FromObjectAndKey(NSObject.FromObject(val),NSObject.FromObject(key));
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...