如何在C#中为类型创建一个较短的名称?

时间:2010-08-12 14:45:42

标签: c#

这是我的情景。

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

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

Type btype = typeof(A.B)

我的问题是如何在我的演员场景中使用此btype。我试图做的时候

   var something = (btype) object

我收到编译错误“Type或Namespace expected”。

4 个答案:

答案 0 :(得分:14)

您可以使用别名:

在代码文件的顶部,在using语句中添加:

using SomeShorterName = A.B;

然后,在该文件中您需要引用A.B的其他地方,您可以使用别名。

答案 1 :(得分:2)

您可以使用using指令 - http://msdn.microsoft.com/en-us/library/sf0df423.aspx

在您要使用的任何文件的顶部使用此项。

using TypeB = A.B;

答案 2 :(得分:2)

Type是一种包含类型信息的变量。第一行很好,但我会解释为什么第二行是不可能的。

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

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

但是,如果有人回答,您可以使用using语句来简化解决方案。我只是在评论你不能使用TypeofType变量进行转换/变量的事实。

答案 3 :(得分:1)

您收到此错误,因为btype是运行时变量,但编译器需要在转换语句中使用编译时常量。

唯一的方法就是:

  

var something =(A.B)object

顺便说一句:如果你必须投入很多,通常是一个强烈的迹象,你应该重新考虑你的设计。

托马斯