使用这行代码,VS2015显示" Cast是多余的"两个参数(但工作!!)。
Activator.CreateInstance(type, (IOperationContext)null, (Dictionary<string, object>)null);
然而,如果我删除它们,我会得到:
Activator.CreateInstance(type, null, null);
它抛出&#34; System.MissingMethodException &#34;例外:
类型的构造函数 &#39; iBI.Services.Hsd.Operations.Schedule.RefreshUsedOperation&#39;没找到。
使用有什么问题,或者这只是visual studio的假alram?
答案 0 :(得分:4)
致电时
npm install
它实际上是调用
String sql ="BEGIN;" +
"DELETE FROM users WHERE username='gg';" +
"DELETE FROM comprofiler WHERE id=611;" +
"COMMIT;";
st.execute(sql);
方法重载和此CreateInstance重载查找无法找到的无参数ctor。
致电时
Activator.CreateInstance(type, null, null)
然后调用
CreateInstance(Type type, object[] args, object[] activationAttributes)
过载。然后发现并召唤了两个参数。这两个参数都是空的。
答案 1 :(得分:1)
我会说这是VS的误报,因为反射需要那些演员来知道要调用哪个构造。如果没有这些转换,您提供的参数没有类型,这使得Activator无法知道要使用哪个签名,特别是如果您有多个构造函数,这些构造函数采用不同类型的2个参数。警告可能来自这样的事实:在几乎所有其他情况下这确实是多余的,因为null可以适用于所有引用类型(如果您尝试在值类型中放置null,编译器将抛出错误)和将(有点)采取其容器的类型。此时,如果您希望可以使用Visual Studio打开错误报告,因为这确实可以(应该?)修复。
答案 2 :(得分:1)
实际上,Visual Studio是正确的,因为 两个 强制转换都是多余的。如果您删除其中一个演员阵容但将另一个演员阵容留在那里,VS将停止抱怨,因为您没有任何多余的演员阵容,但仍有足够的信息来调用正确的方法重载:
这两个选项都很好:
flash
答案 3 :(得分:1)
IDE没有问题。只需打开MSDN并查看覆盖:this和this。当你写道:
Activator.CreateInstance(type, (IOperationContext)null, (Dictionary<string, object>)null);
.NET知道它应该使用second method。当你写下:
Activator.CreateInstance(type, null, null);
我认为,.NET将其解释为first method,这就是你遇到问题的原因。 您可以尝试编写下一个代码:
Activator.CreateInstance(youType, args:null, activationAttributes:null);
它应该有用。