string to = "user@example.com";
string from = "user@example.com";
string title = "Test";
string body = "Test Email";
Type t1 = Type.GetType("System.Net.Mail.MailMessage");
Object test = Activator.CreateInstance(t1, new object[] { to, from, title, body });
我试图对System.Net.Mail使用反射(不要问为什么)。
现在当我运行和编译时,它说,来自,title和body都是NULL(System.ArgumentNullException:Value不能为null。)
为什么会这样?如果我用它们定义的变量替换变量就可以正常工作。
编辑1完全错误
System.ArgumentNullException: Value cannot be null.
at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
at System.Activator.CreateInstance(Type type, Object[] args)
at mcclureski.Program.Main(String[] args) in c:\Users\JohnDoe\Documents\SharpDevelop Projects\Test\Program.cs:line 67
答案 0 :(得分:0)
Activator.CreateInstance中的第二个参数是params array,因此不要实例化对象数组,只需按照正确的顺序放置参数:
Object test = Activator.CreateInstance(t1, to, from, title, body);