这是我的情景。
public Class A
{
public Class B{..}
.
.
}
在我的代码中的很多地方我必须转换为类型B.合格的名字A.B在我的情况下变得非常长。为了更好的可读性,我想创建一个包含B类型的Type变量。
Type btype = typeof(A.B)
我的问题是如何在我的演员场景中使用此btype。我试图做的时候
var something = (btype) object
我收到编译错误“Type或Namespace expected”。
答案 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
语句来简化解决方案。我只是在评论你不能使用Typeof
和Type
变量进行转换/变量的事实。
答案 3 :(得分:1)
您收到此错误,因为btype是运行时变量,但编译器需要在转换语句中使用编译时常量。
唯一的方法就是:
顺便说一句:如果你必须投入很多,通常是一个强烈的迹象,你应该重新考虑你的设计。var something =(A.B)object
托马斯