0

Windows ランタイム コンポーネントで sqlite を使用しようとしています。しかし、nuget sqlite-net パッケージを追加すると、219 エラーが発生します。どこにもそれを理解できませんでした。同様の問題はありますか?

最後に、ストア アプリ クラス ライブラリを使用して sqlite を使用し、それらのメソッドを Windows ランタイム コンポーネントから呼び出しました。

ストアアプリでの方法

   public async  Task<IEnumerable<TaskGroup> > GetTaskGroup()
    {
         return await conn.QueryAsync<TaskGroup>("select * from TaskGroup");

    }

win ランタイム コンポーネントでメソッドを呼び出す

public IAsyncOperation<IEnumerable<TaskGroup>> GetAllTaskGroup()
    {
        return m_objDAL.GetTaskGroup().AsAsyncOperation();

    }

次のエラーが表示されます

Error   1   Method 'Tasker.BAL.TaskManager.GetAllTaskGroup()' has a parameter of type 'Windows.Foundation.IAsyncOperation<System.Collections.Generic.IEnumerable<SQLLite.Models.TaskGroup>>' in its signature. Although this generic type is not a valid Windows Runtime type, the type or its generic parameters implement interfaces that are valid Windows Runtime types. Consider changing the type 'SQLLite.Models.TaskGroup' in the method signature. It is not a valid Windows Runtime parameter type.   

ストア アプリ メソッドをプライベートとして作成すると、このブログ http://rarcher.azurewebsites.net/Post/PostContent/23に従って解決されます

しかし、プライベートであるため、アクセスの問題が発生するため、これを使用できません。

任意のソルン?

4

2 に答える 2

2

これらのエラーの意味がわかりませんが、最初に [ツール] > [拡張機能] から Windows ランタイム用の SQLite をインストールしましたか? sqlite-net は LINQ クエリ ライブラリです。

于 2013-03-26T07:06:36.980 に答える
0

Windows ランタイム コンポーネントには、外部に公開する型に関して多くの制限があります。

を含めるsqlite-netと、そのすべての型が public と宣言され、コンポーネントによって効果的に公開されます。これが、表示されているエラーの理由です。

問題を解決するには、次の 2 つのいずれかを実行できます。

  • ファイル内のすべての修飾子を internalに変更できpublicます。これにより、毎回このプロセスを繰り返さなければならないため (数分の作業)、パッケージを新しいバージョンに更新することが難しくなります。SQLite.csSQLiteAsync.cs
  • 別の Windows ストア アプリ クラス ライブラリを作成し、sqlite-netそこから参照して、Windows ランタイム コンポーネントからこのクラス ライブラリを参照できます。この方法sqlite-netのクラスは、コンポーネントによって自動的に公開されません。
于 2013-03-27T05:51:33.800 に答える