在C#3.0中,我们使用"var"它在C#2.0中的替代品是什么?

Moh*_*san 2 c# var mef c#-3.0

我正在使用Managed Extensibility Framework(MEF)学习.Net中的可插拔体系结构.我在网上看到了示例代码,但是当我尝试实现它时,我陷入了困境.

代码使用的是:

 var catalog = new AttributedAssemblyPartCatalog(Assembly.GetExecutingAssembly());
 var container = new CompositionContainer(catalog.CreateResolver());
Run Code Online (Sandbox Code Playgroud)

这var可以在C#3.0上获得,因为我在C#2.0中进行编码.

上述两种陈述的替代方案是什么?如何使用VS 2005使它们在c#2.0中运行?


我现在尝试了这个说法

错误1 找不到类型或命名空间名称'AttributedAssemblyPartCatalog'(您是否缺少using指令或程序集引用?) C:\ Documents and Settings\test\Desktop\MEFDemo\MEFDemo\Program.cs 31 13 MEFDemo

我在哪里为SystemComponentModel.Composition添加了referance

Ant*_*lev 11

基本上,var强制编译器根据它的"初始化程序" 确定(推断)变量的编译时类型 - 实际上是=符号右边的表达式.这里的类型很明显:

AttributedAssemblyPartCatalog catalog = 
    new AttributedAssemblyPartCatalog(Assembly.GetExecutingAssembly());
CompositionContainer container = 
    new CompositionContainer(catalog.CreateResolver());
Run Code Online (Sandbox Code Playgroud)

并确保添加using System.ComponentModel.Composition;声明.另外,请注意,AttributedAssemblyPartCatalog已重命名为AssemblyCatalog.

  • 我不确定你的明显屈尊是否必要,如果OP"显然"不明白,是否有必要指出这一点? (4认同)
  • 我删除了"明显的屈尊俯就",这是一个向下投票的磁铁,这是一个完整而全面的问题. (4认同)