system.linq namespaceをブーにインポートするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/4583076

  •  14-10-2019
  •  | 
  •  

質問

インポートしようとするとき System.Linq 名前空間からブーコンパイラ、このエラーが発生します。

boo.lang.compiler.compilererror:

namespace 'System.linq'が見つかりませんが、アセンブリリファレンスを追加するのを忘れたのでしょうか?

「Rhino.dsl.dll」を使用しています。DSLエンジンコードはこちらです。

public class MyDslEngine : DslEngine
{
    protected override void CustomizeCompiler(BooCompiler compiler, CompilerPipeline pipeline, string[] urls)
    {
        pipeline.Insert(1, new AnonymousBaseClassCompilerStep(typeof(DslBase), "Prepare",
            "System.Linq",
            "Azarakhsh.Framework.Repository" //it's my repository framework
            ));
        pipeline.Insert(2, new UseSymbolsStep());
        pipeline.Insert(3, new RunScriptCompilerStep());
    }
}
役に立ちましたか?

解決

なぜDSLにSystem.linqが必要なのですか? Sytem.linqは、フレームワークに「隠されている」必要があります。 linqをブーで使用することに加えて、それはちょっと冗長なもの(私の意見では)であり、あなたのDSLはこの冗長なものを隠すべきです...

import System.Linq.Enumerable from System.Core
bar = List of string() 
bar.Add("foo")
bar.Add("baz")

baz = bar.Where({x as string | x =="baz"}).Single()

System.linqの使用については、試していませんが、このリンクを見つけました ブーマークマイル, 、上記のコードがコピーされた場所...

他のヒント

に参照を追加してみてください System.Core あなたのプロジェクトへのアセンブリ。 のほとんどのクラス System.Linq 名前空間はそのアセンブリにあります。

それがうまくいかない場合は、参照を追加してみてください System.Data.Linq.

将来的には、コンパイラが提供するエラーメッセージの有用性を過小評価しないでください。はい、時々彼らは不可解であり、時には彼らは誤解を招くことさえあります。しかし、彼らは確かに、あなたが働くと予想していた何かがコンパイルしない理由を理解しようとしているときに始めるのに良い場所です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top