shared-librariesMonoDroidとMonoTouchの共有ライブラリだから私の会社は完全にC#.Net環境から来ているので、私たちはモバイル開発のためにモノを探しています。Libraryとして移植することができました。このAndroidクラスライブラリは、今後MonoTouch用に再利用できるモバイルプラットフォームライブラリになります(テストはしていませんが、MonoTouchプロジェクトはAndroid固有のコードがない限りAndroidクラスライブラリを参照できます)。ライブラリ内にはたくさんのロギングステートメントがあり、Windows環境ではトレースステートメント(カスタムヘルパークラスにラップされています)が終了します。ロギングステートメントを保持し、現在の環境(iOSまたはAndroid)に基づいて、それらをネイティブロギングに変換するだけです。私は、モバイルプラットフォームライブラリのロギングに部分宣言を使用し、AndroidおよびiOS固有のライブラリにこれらの部分的なロギングメソッドの実装が含まれるようにする予定でした。パーシャルがアセンブリ間で動作しないことが分かったとき、それは分かれた。私はこれについてどうやって行くのか分からない。2つの別々のiOSとAndroidプラットフォームのライブラリがあり、同じファイルをリンクしている場合は、私が考えることができる唯一のものです。(Xamarinにはこれを行うログクラスがあるかもしれませんが、他の将来の抽象化のパターンを考え出す必要があります)アドバイスをいただければ幸いです。私たちはまだ実験/計画段階にありますので、何かを見落とす可能性があります。その場合は教えてください。}}モバイルプラットフォームライブラリ内にこのメソッドを何百回も呼び出す必要があります。あなたは答えとしてそれを書く必要があります。源ロギングステートメントを変更したくないので具体的なアドバイスを提供できるかどうかは不明です。私の会社では、Windows/Silverlight/Android/Unity3Dの間でコードを共有していますが、私たちは再利用可能なインターフェイスでロギング実装を抽象化しました。アプリケーションのブートストラップの一環として、プラットフォーム固有のロガーをバックグラウンドで追加します。インタフェースをヒットし、使用されているプラ​​ットフォームの詳細を知らない。源(続き)もちろん、ビジネスロジックからログを取る方法を変更しなければならないことを意味します。UIレイヤーが現在どのようにログに記録されているのか(そしてもしあれば)どの程度まで変更するのかのコードサンプルを投稿するべきでしょう。答えmvvmcrossでは、私はこのインターフェースを使ってこれに取り組んできました。私は共通のIMvxTraceインターフェイスを宣言しています。/MvvmCross/blob/master/Cirrious/Cirrious.MvvmCross/Platform/Diagnostics/MvxTrace.csこのシングルトンは、基本的な_realTrace実装を使用します。ドロイドでは、_realTraceは次のようになります。/MvvmCross/blob/master/Cirrious/Cirrious.MvvmCross/Android/Platform/MvxDebugTrace.csそしてタッチすると、_realTraceは次のようになります。/MvvmCross/blob/master/Cirrious/Cirrious.MvvmCross/Touch/Platform/MvxDebugTrace.cs同様に、wpf、win8、wpのカスタム実装があります私はこの両方をファイルリンク(マスターで)を使ってやっていますが、最近ではPCLとプラットフォーム固有のライブラリを混在させて使用しています。設定は、リファクタリングツールを使用するのが好きなPCL向けです。#ifコードよりもPCLのほうがはるかに優れています。私が1から6までのプラットフォームから自分のコードを増やしたので、維持するにはあまりにも複雑な#ifステートメントの6セットが見つかりました。InjectionとIOC技術も使用しています。私はこれがクロスプラットフォームのコード共有に本当に役立つことがわかります。tinyioc、xplatutils、opennetcf、mvvmcrossのシンプルなIOCなど、いくつかの移植可能なIOCライブラリが利用可能です。Stuart源これを修正する最も簡単な方法は、iOSプロジェクトをセットアップすることです。基本的にはこれを行うだけです。Androidプロジェクトのすべてのファイルに「リンクイン」します。コンパイラフラグを設定することができます。私たちは常にこのアプローチをとっており、柔軟性のためにPCL(移植可能なクラスライブラリ)を使用するよりも時には好んでいます。jonathanpeppers源プラットフォーム固有のコードがあれば、ある程度はそれをやる必要があります。PCLを使用することは良い考えです(Stuartが示唆しているように)。各プラットフォームでインターフェイスをスタブアウトする必要があります。2つのライブラリ(iOSとAndroid)とそれらの間の「リンクイン」ファイルを持つことは理想的ではないようです。