Cos*_*min 5 .net c# compiler-errors
让我们考虑以下第一个例子:
public class ClassNameExample
{
private ClassNameExample()
{
//code goes here
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我尝试ClassNameExample从同一个程序集中实例化该类,我将得到"由于它的保护级别而无法访问"编译器错误消息(CS0122).
但是,如果我尝试ClassNameExample从不同的程序集实例化该类,我得到一个"类型'类'没有定义构造函数"编译器错误消息(CS0143)
有人可以解释为什么编译器看到它们不同吗?
作为参考,我在Visual Studio 2012,.NET 4.5中尝试过这个.
我尝试查看 Microsoft.CSharp.CSharpCodeGenerator 的作用并找出错误所在的位置,但最后的代码依赖于外部文件。
我能给你的唯一答案是:如果你创建一个实例
Assembly.GetExecutingAssembly().CreateInstance("ClassNameExample");
Run Code Online (Sandbox Code Playgroud)
甚至与 Activator.CreateInstance("Your assembly", "ClassNameExample");
两者都返回 null,因为它们依赖于公共构造函数,请检查标志
public object CreateInstance(string typeName)
{
return this.CreateInstance(typeName, false, BindingFlags.Instance | BindingFlags.Public, (Binder) null, (object[]) null, (CultureInfo) null, (object[]) null);
}
Activator.CreateInstance(assemblyName, typeName, false, BindingFlags.Instance | BindingFlags.Public | BindingFlags.CreateInstance, (Binder) null, (object[]) null, (CultureInfo) null, (object[]) null, (Evidence) null, ref stackMark);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
157 次 |
| 最近记录: |