2010-08-12 57 views
2

这是我的场景。如何在C#中为类型创建一个较短的名称?

public Class A 
{ 
    public Class B{..} 
. 
. 
} 

在我的代码中的很多地方我必须转换为类型B.合格的名字A.B在我的情况下变得非常长。为了更好的可读性,我想创建一个保存B类型的Type变量。

Type btype = typeof(A.B) 

我的问题是如何在我的铸造场景中使用这种btype。当我试图做

var something = (btype) object 

我得到编译错误“预期的类型或命名空间”。

+0

你不能做到这一点,看看 – 2010-08-12 14:47:16

回答

14

您可以使用别名:在该文件中,你需要参考AB

using SomeShorterName = A.B; 

然后,在其他地方,:

在你的代码文件的顶部,在using语句添加此你可以使用别名。

+0

你贴秒之前,我完成了打字仿制药。完全是我的建议。 – 2010-08-12 14:49:39

+0

有没有办法在一个中央位置而不是多个文件中进行此操作? – SKG 2010-08-12 15:02:06

+0

@SKG:我不这么认为。 – 2010-08-12 15:09:21

2

Type是一种变量,它保存关于某个类型的信息。第一行很好,但我会解释为什么第二行是不可能的。

var关键字要求在编译时知道要存储到其中的变量的类型。也试图使用bytype作为铸造操作符是不可能的,因为它只是一个变量。

您需要使用C#语言的整个部分:泛型。这允许使用动态类型。我会建议让你的类一般,所以你可以有编译时间遵守。

但是,如有人回答,您可以使用using声明来简化解决方案。我只是评论你不能使用TypeofType变量来执行投射/变量的事实。

1

你得到这个错误,因为btype是一个运行时变量,但编译器需要一个编译时常量在一个转换语句中。

的唯一方法是这样的:

VAR东西=(AB)对象

顺便说一句:如果你要投非常多,它通常是你应该重新考虑你的设计强大的标志。

托马斯

+0

当然,您可以使用别名缩短您的标识符,如其他答案中所述... – 2010-08-12 14:56:12

相关问题