繁体   English   中英

Objective-C转换为C#:如果字典是强类型的,如何在C#中使用多个类型的.plist?

[英]Objective-C converting to C#: How can I use a .plist with multiple types in C# if Dictionary is strongly-typed?

这个问题有点复杂,所以我会尝试解释。 我有一个我用Xcode创建的自定义.plist(XML Property List)文件。 其中有许多不同类型的数据:NSDictionary,NSArray,NSString,BOOL等。

这是一个例子:

在此输入图像描述

在我的代码中,我可以快速获取整个文件的NSDictionary ,而无需使用以下代码知道数据类型(顺便说一下,这是ARC代码)。 我唯一知道的数据类型是所有键都是字符串,但是值可以是我上面显示的任何值:

+ (NSDictionary *)configDictionary
{
    collectorstemplateAppDelegate *appDelegate = (collectorstemplateAppDelegate*)
           [[UIApplication sharedApplication] delegate];
    NSString *path = [[NSBundle mainBundle] 
           pathForResource:appDelegate.currentPlist ofType:@"plist"];
    NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];
    return dict;
}

我想做的是在C#上完成同样的事情。 我想把这些plist移到我的Windows Phone手机应用程序中,保持相同的结构。 我意识到我将需要编写一些其他代码来处理文件后的XML,但是您明白了...。我想要一个DictionaryHashTableCollection ,其操作与我上面所做的类似,而又不知道值的类型。

显然在我的情况下,像Dictionary<string, string>这样的东西对我来说不起作用。

任何帮助都会很棒。

在这里回答我自己的问题,但寻找验证....

Dictionary<string, object>起作用吗? 因为我知道键是一个字符串,我只需要将值转换为适当的类型,对吗?

int appleID = (int) plistDict["appleid"];

如果这是正确或不正确的,请有人告诉我。

Hashtable是Dictionary的非泛型版本。 换句话说,它不需要您指定它处理的类型,您可以像在Objective-C中那样兑现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM