エクスポートされていないメソッドがあり、別のパッケージで定義されているため、型は 'X' を実装できません

WBOY
リリース: 2024-02-09 11:10:10
転載
444 人が閲覧しました

エクスポートされていないメソッドがあり、別のパッケージで定義されているため、型は X を実装できません

php 編集者 Yuzi、こんにちは! 「X」タイプの実装の問題については、エクスポートされていないメソッドがあり、別のパッケージで定義されているため、直接実装することはできません。 PHP では、異なるパッケージ間のメソッドやプロパティに直接アクセスすることはできません。 「X」タイプを実装する場合は、インターフェイスまたは継承を使用して、必要な機能を間接的に実装することを検討できます。インターフェイスを定義して別のクラスに実装するか、継承することによって、必要なメソッドとプロパティを取得します。これにより、「X」タイプの機能をさまざまなパッケージに実装できるようになります。お役に立てれば!

質問の内容

次のコードがあります:

リーリー

次のエラーが発生しました:

リーリー

私のメッセージサーバーの構造は次のようになります:

リーリー

エラーは次の行にあります:

リーリー

何が起こったのかわかりません:(

回避策

mustEmbedUnimplementedMessageServiceServer() の実装を提供しないでください。サーバー構造を埋め込む必要があります UnimplementedMessageServiceServer . メンバーは、これを伝えるために so という名前が付けられています。インターフェイスには、

というドキュメント コメントもあります。

すべての実装は、上位互換性のために UnimplementedMessageServiceServer を組み込む必要があります。

いつの日か、gRPC 開発者がサーバー インターフェイスに新しいメソッドを追加するかもしれないという考えです。これを行うと、「メソッドが実装されていません」エラーを返す新しいメソッドも unimplemented 型に追加されます。 unimplemented 型をサーバー型に埋め込む必要があるため、サーバーのエラーによりコードが突然型チェックに失敗し始めるのではなく、メソッドを継承してエラーをスローするデフォルトの実装を取得します。 type には新しいメソッドがありません。

以上がエクスポートされていないメソッドがあり、別のパッケージで定義されているため、型は 'X' を実装できませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート