我正在构建一个项目,该项目同时具有 Android
和 iOS
客户端以及 MonoTouch
和 MonoDroid
。公共(public)业务层项目包含公共(public)域实体。
其中一个需要存储图像、姓名和年龄。图片未下载。
是否可以创建一个通用对象来保存 PNG 或 JPG 的实际数据,但它在 iOS
和 Android
中都可行?
///Simplified customer
class Customer {
public Image???;
public string Name;
public Int Age;
}
最佳答案
选项:
- 将 Image 表示为 byte[] 或 MemoryStream/Stream
使用原生平台特定代码需要部分类和链接 Customer.cs 中的通用类 - 通过项目链接我将这种方法称为 split-n-link 或链接拆分
公共(public)部分类客户{ 公共(public)字符串名称; 公共(public)诠释年龄;
monotuch 项目中 monotuch 的 delta 类
public partial class Customer {
public UIImage;
}
m4a 项目中 android 单声道的增量类
public partial class Customer {
public ImageView;
}
因此,每个项目都将包含 Customer.cs 一个原始/来源和其他链接,如果处理 Windows Phone,哪个取决于偏好或共同特征分母(目前它具有最小的特征集 - 更好的是更严格)。 除了主/原始/源 Customer.cs 文件外,还有 2 个(如果是 WP,则为 3 个)平台增量 具体的东西。请记住,部分类是“可加的”,这意味着您可以在不同的 cs 文件中添加属性并且它们适用,因此在此增量类中,您可以添加特定于平台的属性,并在需要时启用诸如绑定(bind) iOS 广告/或 Android 之类的东西。从 Holisticware 经验(Visual Studio 中心 80% 以上,Mac 上 20% 或更少)源项目是 Android 的 Mono,但它可能是相反的...
使用 link-n-spilt 基本上可以得到 POCO + delta,这个 POCO 可用于定位桌面平台(WF、WPF),在这种平台上一切都更容易:调试、单元测试等。
每个项目都是使用该平台的配置编译/构建的优势 - 所以来自 Xamarin 的 ig 家伙提出了一些其他构建的好主意,比如大小优化,这不应该影响项目 - 重新编译并开始!
HTH 梅尔
关于android - MonoTouch+MonoDroid : Common business objects with Images,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10712556/