在类中使用别名而不是声明新类

时间:2017-11-14 14:52:48

标签: c# typedef using

我在webservice中有一个复杂的事件args类

public partial class PROJECT.WCF.MyActionCompletedEventArgs 
{
...
};

现在我有一个以某种方式包装此Web服务的类

public class WebserviceCtrl
{
...

现在我想添加自己的处理程序,其中已经定义了相同的事件args。所以我想在类中使用using别名(比如C ++中的typedef),如下所示:

public class WebserviceCtrl
{
  using ActionCompletedEventArgs = PROJECT.WCF.MyActionCompletedEventArgs;
  ...

但是我直接在using语句前面遇到语法错误。我可以直接在类声明前面使用这个using语句(在命名空间内)。将此语句放在类定义中的位置并不重要。

我知道声明我自己的ActionCompletedEventArgs类的可能性,但在这种情况下,我必须提供特定的构造函数,并强迫我编写不需要的特定构造函数" ,如果我只是使用别名......
所以我不想申报自己的班级!

我已经使用文档研究过C#,但我可以找到有关此内容的任何信息。

我的问题是,为什么我不能在课堂上使用classx = classy;

2 个答案:

答案 0 :(得分:1)

别名仅适用于当前文件(或当前文件中的当前命名空间范围),并且它们在编译输出中不存在。就像其他使用“包含”命名空间的语句一样。

没有理由将它们放在其他地方,只会让代码更难阅读。

答案 1 :(得分:0)

考虑使用类似的通用类:

public class WebserviceCtrl<T> where T : MyActionCompletedEventArgs

您尝试执行此操作的方式不支持您,但如果您尝试引用变量类,则泛型是如何在C#中完成的。