C#中缺省构造函数为私有的类能实例化么? (300分)

  • 主题发起人 主题发起人 fish_dong
  • 开始时间 开始时间
F

fish_dong

Unregistered / Unconfirmed
GUEST, unregistred user!
昨天在用C#实现注册式单件的时候发现了.net反射机制中一个很怪的地方(Java就不是这样):
有办法可以将缺省构造函数为私有的类实例化,测试例程如下:
using System;
namespace RelTest
{
/// <summary>
/// Test 的摘要说明。
/// </summary>
class privatetest
{
private privatetest(){}
public void SayHello()
{
Console.Write("privatetest say hello./n");
Console.Write("Press enter to exit.../n");
Console.ReadLine();
}
}

class Test
{
public static void Main()
{
privatetest mytest=(privatetest)Activator.CreateInstance(Type.GetType("RelTest.privatetest"),true);
mytest.SayHello();
}
}
}
(Microsoft .NET 框架版本:1.0.3705.288,SP1下运行通过)
以下是摘自MS文档
_______________________
[C#]
public static object CreateInstance(
Type type,
bool nonPublic
);
参数
type
要创建的对象的类型。
nonPublic
如果匹配且无参数的构造函数可以为公共或非公共,则为 true;否
则,只有公共构造函数才可以匹配。
备注
要调用的构造函数必须是可访问的。
------------------------

看备注的说明应该是不行的,但测试代码确实通过了。
这样一来,即便构造函数为私有的类依然能直接能创建,那就会带来不少问题。
比如单件类不再保险,对象Pool也是,等等。
欢迎大家讨论
 
'Permission.Business.Business()' is inaccessible due to its protection level
1.1的Microsoft .NET 编译通不过
 
你的1.1是beta版么?哪里有下载?
 
我用的是VS2003 BETA,你要吗?
 
哦,这个包有2G多吧。呵呵,你是哪里搞的?怎么给我呢?
 
www.ssite.com
有下.如果不行,那我给你提供下载吧,不过:50K/S,不知你感觉如何?
 
不会吧,兄弟,你给的这个网址有问题吧,怎么弹出N多国外XX网站?!
 
to fish_dong:
兄弟,呀,对不起了!那天弄错了,我昨天在别人的计算机上也进这个网址,才发现是一个
黄品源,呜呜,是我给错了!昨天是和一个MM一块去看的这个网,昏倒中.,.....
www.ssite.org
 
和MM一起
……
兄弟,这下你惨了,同情ing
 
多人接受答案了。
 

Similar threads

回复
0
查看
987
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部