Android 单触式&x2B;MonoDroid:具有图像的常见业务对象

Android 单触式&x2B;MonoDroid:具有图像的常见业务对象,android,ios,mono,xamarin.ios,xamarin.android,Android,Ios,Mono,Xamarin.ios,Xamarin.android,我正在构建一个项目,该项目既有Android客户端,也有iOS客户端,其中MonoTouch客户端和MonoDroid。公共业务层项目包含公共域实体 其中一个需要存储图像、姓名和年龄。图像未下载 是否可以创建一个公共对象来保存PNG或JPG的实际数据,但在iOS和Android中都是可行的 ///Simplified customer class Customer { public Image???; public string Name; public Int Age; }

我正在构建一个项目,该项目既有
Android
客户端,也有
iOS
客户端,其中
MonoTouch
客户端和
MonoDroid
。公共业务层项目包含公共域实体

其中一个需要存储图像、姓名和年龄。图像未下载

是否可以创建一个公共对象来保存PNG或JPG的实际数据,但在
iOS
Android
中都是可行的

///Simplified customer
class Customer {
   public Image???;
   public string Name;
   public Int Age;
}
选项:

  • 将图像表示为字节[]或内存流/流
  • 使用本机平台特定的代码需要分部类和链接 Customer.cs中的公共类-通过我称之为split-n-link的项目链接 或链接n-split

    公共部分类客户{ 公共字符串名称; 公共信息; }

  • monotouch项目中monotouch的delta类

    public partial class Customer {
        public UIImage;
    }
    
    m4a项目中android mono的delta类

    public partial class Customer {
        public ImageView;
    }
    
    因此,每个项目都将包含Customer.cs一个原始/源和其他指向它的链接,这取决于与Windows Phone打交道时的首选项或公共功能分母(目前它具有最小的功能集-最好限制性更强)。 除了main/original/source Customer.cs文件外,还有2(如果是WP,则为3)个带平台的增量 具体的东西。请记住,分部类是“加法”的,这意味着您可以在不同的cs文件中添加属性并应用它们,因此在这个增量类中,您可以添加特定于平台的属性,并在需要时为iOS ad/或Android启用绑定等功能。从Holisticware体验(以Visual Studio为中心的80%+,Mac上20%或更少)来看,源项目是Android的Mono,但也可能是相反的

    有了link-n-spilt,基本上就有了POCO+delta,这个POCO可以用于桌面平台(WF、WPF),在那里一切都比较容易:调试、单元测试等等

    还有一个优点是,每个项目都是根据该平台的配置进行编译/构建的——因此来自Xamarin的ig人员想出了一些其他构建的好主意,比如大小优化——这应该不会影响项目——重新编译并开始

    嗯 mel

    选项:

  • 将图像表示为字节[]或内存流/流
  • 使用本机平台特定的代码需要分部类和链接 Customer.cs中的公共类-通过我称之为split-n-link的项目链接 或链接n-split

    公共部分类客户{ 公共字符串名称; 公共信息; }

  • monotouch项目中monotouch的delta类

    public partial class Customer {
        public UIImage;
    }
    
    m4a项目中android mono的delta类

    public partial class Customer {
        public ImageView;
    }
    
    因此,每个项目都将包含Customer.cs一个原始/源和其他指向它的链接,这取决于与Windows Phone打交道时的首选项或公共功能分母(目前它具有最小的功能集-最好限制性更强)。 除了main/original/source Customer.cs文件外,还有2(如果是WP,则为3)个带平台的增量 具体的东西。请记住,分部类是“加法”的,这意味着您可以在不同的cs文件中添加属性并应用它们,因此在这个增量类中,您可以添加特定于平台的属性,并在需要时为iOS ad/或Android启用绑定等功能。从Holisticware体验(以Visual Studio为中心的80%+,Mac上20%或更少)来看,源项目是Android的Mono,但也可能是相反的

    有了link-n-spilt,基本上就有了POCO+delta,这个POCO可以用于桌面平台(WF、WPF),在那里一切都比较容易:调试、单元测试等等

    还有一个优点是,每个项目都是根据该平台的配置进行编译/构建的——因此来自Xamarin的ig人员想出了一些其他构建的好主意,比如大小优化——这应该不会影响项目——重新编译并开始


    mel

    我通过使用接口或抽象基类以及运行时注入的具体实现来实现这种类型的共享

    例如,我可能会设置一些接口,如:

     public interface IImage
     {
          int Height { get; }
          int Width { get; }
     }
    
     public interface IImageTools
     {
          IImage Load(string assetPath);
          void SaveToJPEG(IImage image, string savePath, int quality);
          IImage DuplicateAndResize(IImage original, int newHeight, int newWidth);
     } 
    
    然后,我的业务模型会有一些方法来获取对IImageTools的引用-例如,它可能会被注入构造函数中,或者可以从某个容器(例如IoC单例)中获得

    然后,这允许我在运行时为Droid、Touch、WP7、WinRT或NUnit注入单独的本机实现

    在UI项目中,当您实际需要在UI上显示图像时,我通常会将IIImage转换为本机实现,例如TouchImage,它将包含一个方法来获取底层UIImage



    e、 g.不完全符合您的图像要求,但以下是我为相机捕获操作的图像所做的操作:

    我通过使用接口或抽象基类以及运行时注入的具体实现来实现这种类型的共享

    例如,我可能会设置一些接口,如:

     public interface IImage
     {
          int Height { get; }
          int Width { get; }
     }
    
     public interface IImageTools
     {
          IImage Load(string assetPath);
          void SaveToJPEG(IImage image, string savePath, int quality);
          IImage DuplicateAndResize(IImage original, int newHeight, int newWidth);
     } 
    
    然后,我的业务模型会有一些方法来获取对IImageTools的引用-例如,它可能会被注入构造函数中,或者可以从某个容器(例如IoC单例)中获得

    然后,这允许我在运行时为Droid、Touch、WP7、WinRT或NUnit注入单独的本机实现

    在UI项目中,当您实际需要在UI上显示图像时,我通常会将IIImage转换为本机实现,例如TouchImage,它将包含一个方法来获取底层UIImage



    e、 g.不完全符合您的图像要求,但以下是我为摄像头捕获操作的图像所做的操作:

    Mm。将图像表示为字节数组?Mm。将图像表示为字节数组?