1

ととの両方AndroidiOSクライアントを持つプロジェクトを構築しています。共通のビジネス レイヤー プロジェクトには、共通のドメイン エンティティが含まれます。MonoTouchMonoDroid

そのうちの 1 つは、画像、名前、年齢を保存する必要があります。画像はダウンロードされません。

iOSPNG または JPG の実際のデータを保持する共通のオブジェクトを作成することは可能ですが、それは と の両方で何らかの形で機能しAndroidますか?

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

2 に答える 2

4

オプション:

  1. 画像をbyte[]またはMemoryStream/Streamとして表します
  2. ネイティブプラットフォーム固有のコードを維持するには、Customer.csで部分的なクラスとリンクする共通クラスが必要です-プロジェクトを介してリンクするこのアプローチをsplit-n-linkまたはlink-n-splitと呼びます

    public部分クラスCustomer{publicstring Name; public Int Age; }

モノタッチプロジェクトのモノタッチのデルタクラス

public partial class Customer {
    public UIImage;
}

m4aプロジェクトのAndroid用モノラルのデルタクラス

public partial class Customer {
    public ImageView;
}

したがって、各プロジェクトにはCustomer.csが含まれます。1つのオリジナル/ソースおよびその他のリンクは、Windows Phoneを扱う場合は、設定または共通機能の分母に依存します(現在、機能のセットは最小です。より制限があります)。 。main / original / source Customer.csファイルに加えて、プラットフォーム固有のものを含む2つ(WPの場合は3つ)のデルタがあります。部分クラスは「加算的」であることに注意してください。異なるcsファイルに属性を追加して適用できるため、このデルタクラスでは、プラットフォーム固有の属性を追加し、必要に応じてiOS広告やAndroidのバインディングなどを有効にできます。Holisticwareの経験(Visual Studio中心の80%以上、Macでは20%以下)から、ソースプロジェクトはAndroid用のMonoですが、逆になる可能性があります...

link-n-spiltを使用すると、基本的にPOCO + deltaになり、このPOCOは、デバッグ、単体テストなど、すべてが簡単なデスクトッププラットフォーム(WF、WPF)をターゲットにするために使用できます。

そして、各プロジェクトがそのプラットフォームの構成でコンパイル/ビルドされるという利点があります-したがって、Xamarinのigの人たちは、サイズの最適化など、プロジェクトに影響を与えないビルドに関する他の優れたアイデアを思いつきます-再コンパイルして実行してください!

HTHメル

于 2012-05-23T05:50:23.770 に答える
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 への参照を取得する何らかの方法があります。たとえば、コンストラクターに挿入されるか、一部のコンテナー (IC シングルトンなど) から利用できる可能性があります。

これにより、実行時に Droid、Touch、WP7、WinRT、または NUnit の個別のネイティブ実装を挿入できます。

UI プロジェクトでは、実際に UI に画像を表示する必要がある場合、通常は IImage を TouchImage などのネイティブ実装にキャストします。これには、基になる UIImage を取得するメソッドが含まれます。


たとえば、画像の要件はまったくありませんが、カメラキャプチャ操作の画像に対して私が行うことは次のとおりです

于 2012-05-23T06:54:08.743 に答える