2012-05-23 4 views
1

MonoTouchMonoDroid 인 클라이언트는 AndroidiOS 클라이언트를 모두 가지고 있습니다. 일반적인 비즈니스 계층 프로젝트에는 공통 도메인 엔터티가 포함되어 있습니다.MonoTouch + MonoDroid : 이미지가 포함 된 일반적인 비즈니스 개체

그들 중 하나는 이미지, 이름 및 나이를 저장할 필요가 있습니다. 이미지가 다운로드되지 않았습니다.

PNG 또는 JPG에 대한 실제 데이터를 보유하지만 대체로 iOSAndroid 모두에서 작동 할 수있는 공통 개체를 만들 수 있습니까?

///Simplified customer 
class Customer { 
    public Image???; 
    public string Name; 
    public Int Age; 
} 
+0

mm. 이미지를 바이트 배열로 표시 하시겠습니까? – Sver

답변

4

옵션 :

  1. 바이트 [] 또는 MemoryStream을/스트림으로 이미지를 표현
  2. 네이티브 플랫폼 특정 코드와 숙박이 부분 클래스와 Customer.cs에 일반적인 클래스 연결을 필요로 -을 통해 연결 프로젝트이 방법을 split-n-link라고 부릅니다. 또는 link-n-split

    공개 부분 클래스 고객 { pu blic string 이름; 공개 Int 나이; } monotouch 프로젝트 monotouch에 대한

델타 클래스 M4A 프로젝트의 안드로이드에 대한 모노에 대한

public partial class Customer { 
    public UIImage; 
} 

델타 클래스는

그래서
public partial class Customer { 
    public ImageView; 
} 

, 각 프로젝트는 Customer.cs 한 원본을 포함합니다/소스 및 기타 링크, 기본 설정에 따라 달라 지거나 Windows Phone을 다루는 공통 기능 분모 (현재 가장 작은 기능 세트를 가지고 있습니다. 광석 제한). 기본/원본/소스 Customer.cs 파일 외에도 특정 항목이 플랫폼 2 (WP 일 경우 3) 델타가 있습니다. 부분 클래스가 "추가"의미라는 것을 기억하십시오. 다른 cs 파일에 속성을 추가하여 적용 할 수 있으므로이 델타 클래스에서는 플랫폼 별 속성을 추가하고 필요할 경우 iOS 광고 또는 Android 용 바인딩과 같은 항목을 사용할 수 있습니다. Holisticware 경험 (Visual Studio centric 80 % +, Mac의 경우 20 % 이하) 소스 프로젝트는 Android 용 Mono이지만 역방향 일 수 있습니다 ...

기본적으로 POCO + 델타 및이 POCO는 디버깅, 유닛 테스트 등 모든 것이 더 쉬운 데스크탑 플랫폼 (WF, WPF)을 타겟팅하는 데 사용할 수 있습니다.

그리고 각 프로젝트가 해당 플랫폼의 구성으로 컴파일/빌드되므로 이점이 있습니다. Xamarin의 ig 사람은 프로젝트에 영향을 미치지 않아야하는 크기 최적화와 같은 빌드에 대한 다른 밝은 아이디어를 생각해냅니다 - 다시 컴파일하고 이동하십시오!

HTH 멜

1

내가 런타임에 주입 구체적인 구현과 인터페이스 또는 추상 기본 클래스를 사용하여 이러한 유형의 공유를 않습니다.

예를 들어, 나는 몇 가지 인터페이스와 같은 장소에 배치 될 수 있습니다

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에 표시해야 할 때 일반적으로 IImage를 네이티브 구현으로 캐스팅합니다. TouchImage - 기본 UIImage를 유지할 수있는 메서드가 포함됩니다.


이미지 요구 사항은 아니지만 카메라 캡처 작업을위한 이미지는 다음과 같습니다. https://github.com/slodge/MvvmCross/tree/vnext/Cirrious/Plugins/PictureChooser

관련 문제