2

2つのプロジェクトがあります。1つはWebサービスで、もう1つはそのWebサービスを照会するWindowsモバイルアプリケーションです。

たとえば、「動物」というクラスがあるとします。Webサービスを使用して、動物のインスタンスをモバイルデバイスに返したい。問題は、モバイルデバイスが明らかに完全な.netフレームワークをサポートしておらず、クラスAnimalには完全なフレームワークを必要とするいくつかの機能があることです。

ここでの私の最良の選択肢は何ですか?クラスAnimalには、実際には単なるテキストであるプロパティのみが含まれます。データをXMLメッセージに解析してモバイルデバイスに送り返すのが最善ですか(モバイルデバイスで実際にAnimalオブジェクトを使用しないのですか?)、またはプラットフォームごとに1つずつ、2つのクラスを作成しますか?

ありがとう

4

2 に答える 2

0

2 つのプロジェクト間でコード ファイルを共有できます。プロジェクトを右クリックし、[追加] -> [既存の項目] を選択し、[追加] ボタンの横にある下向き矢印をクリックすると、[リンクとして追加] オプションが表示されます。両方のプロジェクトがターゲットであってもクラスがコンパイルされることがわかっている場合プラットフォームが異なる場合、これを使用して両方のプロジェクトのクラスを共有できます

于 2012-07-13T04:25:09.140 に答える
0

同じコードを使用して Windows とモバイルを実行しています。

モバイル デバイスではPocketPC、プロジェクトのプロパティで単語が定義されているため、(C# でコーディングしているため) 行う必要があるのは次のとおりです。

public static bool CreateDirectoryWithPermission(string path) {
  bool ok = false;
  DirectoryInfo dir = new DirectoryInfo(path);
#if !PocketPC
  try {
    DirectorySecurity ds;
    if (dir.Exists) {
      ds = dir.GetAccessControl();
    } else {
      ds = dir.Parent.GetAccessControl();
    }
    string user = Environment.UserDomainName + @"\" + Environment.UserName;
    FileSystemAccessRule rule = new FileSystemAccessRule(user, FileSystemRights.FullControl, AccessControlType.Allow);
    ds.AddAccessRule(rule);
    dir.Create(ds);
    ok = true;
  } catch (Exception) { }
#endif
  if (!ok) {
    try {
      dir.Create();
      ok = true;
    } catch (Exception) { }
  }
  return ok;
}

私の記憶が正しければ、System.Security.AccessControlは Windows Mobile では定義されていないため、DirectorySecurity未定義です。

アップデート:

興味のあることを行う別の方法を次に示します。完全に別の名前空間に Serializable クラスを作成し、その名前空間を両方のプロジェクトで使用して、シリアル化されたデータを Web サービスからモバイル デバイスに渡します。私もそうしますが、コードは他にもあります。

namespace LocksAnimal {

  [Serializable()]
  public class Animal {

    private string name;

    public Animal() {
      name = "Lock";
    }

    public string GetName() {
#ifdef PocketPC
      return name + " (Mobile Version)";
#else
      return name + " (Webservice Version)";
#endif
    }

  }

}

もちろん、Webservice バージョンは、より詳細な情報にアクセスできます (GetAccessControl()最初のコード セグメントに示されているように)。

これがあなたにいくつかのアイデアを与えることを願っています。

于 2012-07-13T16:31:29.780 に答える