텍스트 상자가있는 양식이 있고 텍스트 상자에 값을 입력 한 다음 제출을 누르면 값이 파일에 저장됩니다. 그러나 제출을 누르면 다음 예외가 발생합니다. InventoryMngr 및 CreateInventory 코드에서 문제를 좁히지 만, 내가 잘못하고있는 것이 확실하지 않습니다.System.MissingMethodException : 인터페이스 인스턴스를 만들 수 없습니다.
System.MissingMethodException: Cannot create an instance of an interface.
at HomeInventory2.Services.Factory.GetService(String servicename) in C:\Users\Protego\documents\visual studio 2010\Projects\HomeInventory2\HomeInventory2\Services\Factory.cs:line 37
at HomeInventory2.Business.Manager.GetService(String name) in C:\Users\Protego\documents\visual studio 2010\Projects\HomeInventory2\HomeInventory2\Business\Manager.cs:line 14
at HomeInventory2.Business.InventoryMngr.Create(CreateInventory inv) in C:\Users\Protego\documents\visual studio 2010\Projects\HomeInventory2\HomeInventory2\Business\InventoryMngr.cs:line 19
at HomeInventory2.Form1.submitButton_Click(Object sender, EventArgs e) in C:\Users\Protego\documents\visual studio 2010\Projects\HomeInventory2\HomeInventory2\Form1.cs:line 52
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
InventoryMngr
namespace HomeInventory2.Business
{
public class InventoryMngr : Manager
{
/// <summary>
/// persists the inventory information
/// </summary>
/// <param name="inv"></param>
public void Create(CreateInventory inv)
{
InventorySvc inventorySvc =
(InventorySvc)GetService(typeof(InventorySvc).Name);
inventorySvc.CreateInventory(inv);
}
}
}
CreateInventory
namespace HomeInventory2.Domain
{
[Serializable]
public class CreateInventory
{
/// <summary>
/// item category
/// </summary>
private string itemCategory;
public String ItemCategory
{
set
{
itemCategory = value;
}
get
{
return itemCategory;
}
}
/// <summary>
/// item properties
/// </summary>
private string itemProperties;
public String ItemProperties
{
set
{
itemProperties = value;
}
get
{
return itemProperties;
}
}
/// <summary>
/// item amount
/// </summary>
private string itemAmount;
public String ItemAmount
{
set
{
itemAmount = value;
}
get
{
return itemAmount;
}
}
/// <summary>
/// item value
/// </summary>
private string itemValue;
public String ItemValue
{
set
{
itemValue = value;
}
get
{
return itemValue;
}
}
}
}
InventorySvc는 인터페이스
namespace HomeInventory2.Services
{
public interface InventorySvc : IService
{
void CreateInventory(CreateInventory createinventory);
}
}
에게
,745이다 InventoryImplnamespace HomeInventory2.Services
{
public class InventoryImpl: InventorySvc
{
/// <summary>
/// Creates an output files with the given inventory information written to it, serves as placeholder - this will be replaced with a database system
/// </summary>
/// <param name="createinventory"></param>
public void CreateInventory(CreateInventory createinventory)
{
try
{
FileStream fileStream = new FileStream
("CreateInventory.bin", FileMode.Create,
FileAccess.Write);
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(fileStream, createinventory);
fileStream.Close();
}
catch (ItemNotFoundException)
{
throw new ItemNotFoundException("Output not created - see logs");
}
}
}
}
은 InventorySvc 인터페이스입니까? – mcalex
GetService는 코드를 표시 할 수 있습니까? InventorySvc 인터페이스 –