0

このエラーが発生し続け、何が間違っているのかわかりません。エラー 1 'Home.Services.InventoryImpl' はインターフェイス メンバー 'Home.Services.InventorySvc.CreateInventory(Home.Services.InventoryImpl)' を実装していません

私のインターフェースコード

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Home;
using Home.Domain;

namespace Home.Services
{
    public interface InventorySvc
    {
        void CreateInventory(InventoryImpl CreateTheInventory);
    }
}

私の実装コード

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Home.Domain;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

namespace Home.Services
{
    public class InventoryImpl: InventorySvc
    {
        public void CreateTheInventory(CreateInventory createinventory)
        {

            FileStream fileStream = new FileStream
            ("CreateInventory.bin", FileMode.Create, 
            FileAccess.Write);
            IFormatter formatter = new BinaryFormatter();
            formatter.Serialize(fileStream, createinventory);
            fileStream.Close();
        }
    }
}
4

3 に答える 3

9

あなたのメソッドは呼び出されCreateTheInventoryますが、インターフェースでは呼び出されCreateInventoryます。コンパイラがそのメソッドをインターフェイス メンバーの実装として扱うには、メソッド シグネチャがインターフェイス メンバーと正確に一致する必要があり、名前が一致しません。

さらに、引数の型が一致しません。実装でCreateInventoryは引数の型として持っていますが、インターフェイスは type の引数を取りますInventoryImpl

これら 2 つのエラーを修正すると、コードがビルドされるはずです。

于 2012-09-28T18:16:58.900 に答える
2

インターフェイスInventorySvcは次を定義します。

void CreateInventory(InventoryImpl CreateTheInventory);

しかし、あなたは実装しました:

public void CreateTheInventory(CreateInventory createinventory)

違いを見ます?

于 2012-09-28T18:17:55.173 に答える
0

クラスのメソッド シグネチャがインターフェイス メソッドのシグネチャと一致しません。

インターフェイスの実装を作成するには、マウスをインターフェイス名の上に置いたときに表示されるスマート タグを使用します。これにより、すべてが適切になります。

また、 interface を呼び出す必要がありますIInventorySvc。インターフェイス名のガイドラインでは、論理名が「I」で始まる場合でも、大文字の「I」を論理名の前に配置する必要があると述べています。

于 2012-09-28T18:39:21.130 に答える