2012-12-19 29 views
2

我有一个C#DLL中的类下面的类Activator.CreateInstance MissingMethodException

public class RequiredTask : Base.BaseObject 
{ 

    public string Name { get; set; } 
    public string Description { get; set; } 

    public RequiredTask() 
     : base() 
    { } 

} 

从这个类

public class BaseObject : IBaseObject, INotifyPropertyChanged 
{ 
    public DateTime? UpdatedOn { get; set; } 
    public string UpdatedBy 
    public DateTime? CreatedOn 
    public string CreatedBy 

    public BaseObject() { } 

} 

那么UI继承,是VB.Net WinForm的,这形式将是一个基本形式,是通用的,因此它可与所有从C#库的工作类型,它有一个新的按钮,需要实例化新类型的任何T是并将它传递给,这将是一种形式用于编辑T.

这是形式的代码

Public Class Search(Of T As Library.Base.BaseObject) 

     Private Sub btnNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNew.Click 
      If MyBase.OpenFormName <> "" Then App.mfrmMDI.OpenForm(MyBase.OpenFormName, DirectCast(Activator.CreateInstance(GetType(T), New Object()), T)) 
     End Sub 

End Class 

但我得到这个错误构造函数型“Library.Production.RequiredTask找不到。当它达到

DirectCast(Activator.CreateInstance(GetType(T), New Object()), T) 

回答

8

你得到的异常,因为这里对于需要object类型的单个参数的类型不匹配的构造函数。

更改呼叫:

DirectCast(Activator.CreateInstance(GetType(T)), T) 

这应该自动调用默认的构造函数,这是你定义了一个。

+0

改变新的对象()为Nothing犯规实际编译,与重载解析错误 –

+0

@ user1584413 - 更新了答案,使用适当的过载调用默认的构造函数。 –

+0

工作perferctly,谢谢 –