2009-12-06 2 views
0

를 목록으로의 DataTable은 <T> 변환 문제를

Constructor on type 'Northwind.BO.Products' not found. 

하지만 난 이미 내 Products 클래스의 생성자를 선언 한 것을 알고있다.

public class Products 
{ 
    private int _ProductID; 
    [DataMapping("ProductID", -99)] 
    public int ProductID 
    { 
     get { return _ProductID; } 
     set 
     { 
      if (_ProductID <= 0) 
      { 
       _ProductID = value; 
      } 
      else 
      { 
       throw new Exception("ID should not be set manually!"); 
      } 
     } 
    } 

    private string _ProductName; 
    [DataMapping("ProductName", "")] 
    public string ProductName 
    { 
     get { return _ProductName; } 
     set { _ProductName = value;} 
    } 

    private int _SupplierID; 
    [DataMapping("SupplierID", -99)] 
    public int SupplierID 
    { 
     get { return _SupplierID; } 
     set { _SupplierID = value;} 
    } 

    private int _CategoryID; 
    [DataMapping("CategoryID", -99)] 
    public int CategoryID 
    { 
     get { return _CategoryID; } 
     set { _CategoryID = value;} 
    } 

    private string _QuantityPerUnit; 
    [DataMapping("QuantityPerUnit", "")] 
    public string QuantityPerUnit 
    { 
     get { return _QuantityPerUnit; } 
     set { _QuantityPerUnit = value;} 
    } 

    private decimal _UnitPrice; 
    [DataMapping("UnitPrice", -99.99)] 
    public decimal UnitPrice 
    { 
     get { return _UnitPrice; } 
     set { _UnitPrice = value;} 
    } 

    private short _UnitsInStock; 
    [DataMapping("UnitsInStock", -99)] 
    public short UnitsInStock 
    { 
     get { return _UnitsInStock; } 
     set { _UnitsInStock = value;} 
    } 

    private short _UnitsOnOrder; 
    [DataMapping("UnitsOnOrder", -99)] 
    public short UnitsOnOrder 
    { 
     get { return _UnitsOnOrder; } 
     set { _UnitsOnOrder = value;} 
    } 

    private short _ReorderLevel; 
    [DataMapping("ReorderLevel", -99)] 
    public short ReorderLevel 
    { 
     get { return _ReorderLevel; } 
     set { _ReorderLevel = value;} 
    } 

    private bool _Discontinued; 
    [DataMapping("Discontinued", false)] 
    public bool Discontinued 
    { 
     get { return _Discontinued; } 
     set { _Discontinued = value;} 
    } 

public Products(object[] args) 
{ 
} 

public Products() 
{ 
} 
+1

'Northwind.BO.Products'의 생성자는 어떻게 생겼습니까? 생성자는 찾을 args와 일치해야합니다. – dtb

답변

1

당신은 어떤 Northwind 클래스에 생성자가 필요하지 않습니다 - 예외에 따라, 당신은 Northwind.BO.Products올바른 생성자가 필요합니다.

또한 Activator.CreateInstance에서 사용하는 것처럼이 생성자는 전달한 인수와 일치하는 올바른 서명을 가져야합니다. 인수를 인수로 전달하기 때문에 기본 생성자가 일치하지 않습니다. 내가 질문을 읽으면서

,이 문제는 Northwind.BO.Products 클래스는 하나의 DataRow 취하는 public 생성자가 없다는 것입니다이 생성자

public Products(DataRow dr) 
+0

개체 배열은 CreateInstance 호출의 일부입니다. CreateInstance는 내용과 일치하는 생성자를 찾으므로 배열이 가장 좋습니다. http://msdn.microsoft.com/en-us/library/wcxyzt4d.aspx – dtb

+0

이 방법도 사용할 수 없습니다. public products (object [] args) {} – anonymous

+0

@dtb : 당신 말이 맞습니다 - 내 잘못. 내 대답을 편집했습니다. –

2

이 있어야합니다.

생성자가 가지고있는 생성자를 말할 수 있습니까?

+0

public Products() {} – anonymous

+0

그러면 매개 변수없이'Activator.CreateInstance (type)'만 쓸 수 있습니다. – SLaks

0

생성자 대부분의 서명은 아마도 사용자가 제공하는 인수와 일치하지 않습니다.