2012-09-28 3 views
0

이 오류가 계속 발생하며 내가 잘못하고있는 것이 확실하지 않습니다. 오류 1 'Home.Services.InventoryImpl'인터페이스 멤버를 구현하지 않습니다 'Home.Services.InventorySvc.CreateInventory (Home.Services.InventoryImpl)'인터페이스 멤버를 구현하지 않음 - C#

내 인터페이스 코드

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(); 
     } 
    } 
} 

답변

9

귀하의 방법은 CreateTheInventory이지만 인터페이스에서는 CreateInventory입니다. 메서드 서명은 컴파일러가 해당 메서드를 인터페이스 멤버를 구현하는 것으로 처리하고 이름이 일치하지 않기 위해 해당 인터페이스 멤버와 정확히 일치해야합니다.

또한 인수 유형이 일치하지 않습니다. 구현시 인수 유형으로 CreateInventory이 있지만 인터페이스에는 InventoryImpl 유형의 인수가 사용됩니다.

이 두 가지 오류를 수정하면 코드가 작성됩니다.

+1

여기서 두 개의 센트를 추가하려면, InventorySvc를 입력 한 다음 인터페이스를 마우스 오른쪽 단추로 클릭하고 "구현 인터페이스"를 선택하십시오. 그러면 인터페이스가 네서이지로 작성됩니다. 실제 코드. – iMortalitySX

2

귀하의 InventorySvc 인터페이스 정의 구현 한

void CreateInventory(InventoryImpl CreateTheInventory); 

그러나 :

public void CreateTheInventory(CreateInventory createinventory) 

차이를 보이지?

0

클래스의 메소드 서명이 인터페이스 메소드의 서명과 일치하지 않습니다.

인터페이스 구현을 만들려면 인터페이스 이름 위에 마우스를 올려 놓을 때 나타나는 스마트 태그를 사용하십시오. 이렇게하면 모든 것이 올바르게 이루어집니다.

또한 인터페이스 IInventorySvc을 호출해야합니다. 인터페이스 이름에 대한 지침은 후자가 "I"로 시작하는 경우에도 대문자 "I"가 논리 이름 앞에 있어야한다고 설명합니다.

관련 문제