脚本#和命名空间 - 编译错误

时间:2011-03-11 14:20:01

标签: namespaces script#

我目前正在使用Script#(版本0.6.3),它抱怨以下代码:

  

检查您的C#源编译并且您没有使用不受支持的功能

[PROJECTDIR] \空间1 \ Bar.cs:

using Application1.Space2;

namespace Application1.Space1
{
    public sealed class Bar
    {
        private void Baz()
        {
            IFoo foo = null;
            foo.Do(); //Here
        }
    }
}

[PROJECTDIR] \空间2 \ IFoo.cs:

namespace Application1.Space2
{
    public interface IFoo
    {
        void Do();
    }
}

代码在常规csc.exe下编译时没有任何错误 我做错了什么?

2 个答案:

答案 0 :(得分:1)

我认为这是当前版本的问题。如果将类文件移动到项目的根目录是否有效?

编辑:更正,这是由于当前版本的变化。从@scriptsharp到twitter:“web app项目产生多个脚本(每个文件夹)。如果你不需要那个模型,只需使用一个类lib项目.HTH。”它不习惯这样做。仍然没有准确地解释它输出那个可怕的错误信息的原因。我有点像是强迫你将应用程序逻辑与对象模型分开,但是如果将这种更改记录在某个显而易见的地方会很好。我喜欢SS,并且真的希望看到它成长为一个更认真开发/支持的应用程序。

答案 1 :(得分:0)

如果使用部分命名空间,例如:

,则会发生此错误
using Application1;

namespace Application1.Space1
{
     public class Bar
     {
          public Space2.Foo GetFoo()
          {}
     }
}

以上将产生编译器错误,而:

using Application1;

namespace Application1.Space1
{
     public class Bar
     {
          public Application1.Space2.Foo GetFoo()
          {}
     }
}

编译时没有错误。

我也遇到过:

object.method().property.method();

修正:

variable = object.method();
variable.property.method();