2016-05-21 11 views
0

XamarinポータブルC#コードのアプリケーションパッケージ名/名前空間/バージョン情報にプログラムでアクセスする方法はありますか? this同様C#のXamarin Cross Platformアプリケーションパッケージ名

(リンクは、Androidのためにアクセスする方法ですが、私はポータブルクラスコードでこれにアクセスするには、既存のC#のクロスプラットフォームな方法があるかどうかを知りたい。)

ないthis

+0

Xamarin.Formsにはメソッドはありませんが、依存関係サービスを作成してそれぞれのプラットフォームからパッケージ名を取得できます。 –

+0

ああ。私はそれを避けることを望んでいた。完了したらここにソリューションを投稿します(iOSとAndroidの場合)。 – heights1976

答えて

5

私はあなたの問題に答えましたが、依存関係サービスを使用して作業しています。 Xamarinプラグインがない場合、他の方法はありません。 PCLプロジェクトで

インタフェース:ここ はコードです

public interface IPackageName 
{ 
    string PackageName { get; } 
} 

Androidの実装:

public class PackageNameDroid : IPackageName 
{ 
    public PackageNameDroid() 
    { 
    } 

    public string PackageName 
    { 
     get { return Application.Context.PackageName; } 
    } 
} 

iOSの実装:

public class PackageNameIOS : IPackageName 
{ 

    public PackageNameIOS() 
    { 
    } 

    public string PackageName 
    { 
     get { return NSBundle.MainBundle.BundleIdentifier; } 
    } 

} 

プラットフォームのファイルをマークすることを忘れないでくださいAndroidファイルの依存関係サービス:

[assembly: Xamarin.Forms.Dependency(typeof(PackageNameDroid))]

とiOSのファイル:

[assembly: Xamarin.Forms.Dependency(typeof(PackageNameIOS))]

今、あなたが行ってもいいですし、ちょうどそのようなのPCLでそれを使用することができます。

string packageName = DependencyService.Get<IPackageName>().PackageName;

はそれが役に立てば幸いその他。

関連する問題