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

如何在C#中为类型创建较短的名称?,c#,C#,这是我的设想 public Class A { public Class B{..} . . } 在我的代码中的很多地方,我必须转换为类型B。在我的例子中,限定名a.B变得非常长。为了更好的可读性,我想创建一个包含B类型的类型变量 Type btype = typeof(A.B) 我的问题是如何在我的角色扮演场景中使用此B类型。当我试着去做 var something = (btype) object 我收到编译错误“需要类型或命名空间”。您可以使用别名: 在代码文件顶部的usi

这是我的设想

public Class A
{
  public Class B{..}
.
.
}
在我的代码中的很多地方,我必须转换为类型B。在我的例子中,限定名a.B变得非常长。为了更好的可读性,我想创建一个包含B类型的类型变量

Type btype = typeof(A.B)
我的问题是如何在我的角色扮演场景中使用此B类型。当我试着去做

   var something = (btype) object
我收到编译错误“需要类型或命名空间”。

您可以使用别名:

在代码文件顶部的using语句中添加以下内容:

using SomeShorterName = A.B;

然后,在文件中需要引用A.B的任何地方,都可以使用别名。

可以使用using指令-

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

using TypeB = A.B;

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

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

你需要使用C语言的整个部分:泛型。这允许使用动态类型。我建议您将类设置为泛型,这样您就可以具有编译时遵从性


但是,正如有人回答的那样,您可以使用
using
语句来简化解析。我刚才是说,您不能使用
Typeof
Type
变量进行转换/变量。

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

唯一的办法是:

var something=(A.B)对象

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


托马斯

你不能这么做,看看你在我打字前几秒钟发布的一般信息。正是我的建议。有没有办法把它放在一个中心位置而不是多个文件中?@SKG:是的,我认为你不能,坦白说,我很高兴你不能。不希望在C#中使用C样式的typedef。当然,你也可以使用别名来缩短你的标识符,正如其他答案所描述的。。。