この種の共有は、インターフェイスまたは抽象基本クラスを使用し、具体的な実装を実行時に注入することによって行います。
たとえば、次のようなインターフェイスを配置する場合があります。
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 を取得するメソッドが含まれます。
たとえば、画像の要件はまったくありませんが、カメラキャプチャ操作の画像に対して私が行うことは次のとおりです。