3

模拟 LINQ Web 服务数据提供者(由第三方制作,对我来说实际上是一个黑匣子)涉及什么?这是该黑匣子的典型用法:(已修改以保护无辜者,也称为 NDA)

var conn = new RemoteServer (username,password);
var result = from row in conn.GetSomeData()
    where row.this == "Hello" && row.that != "World"
    select new { row.this, row.that, row.theOther };

我目前知道result的是IEnumerable<T>。另一个使用示例:

string something="xxx";
var result = from row in conn.SubscribeAsync()
    where row.this == something
    select new MyObject(something) { row.that, row.theOther };

(这将继续推送数据,可能每秒推送几个项目,我会想要模拟仔细计时的序列。)

我想我真正的问题是,它会像这样简单吗:

 class MockRemoteServer
 {
     IEnumerable GetSomeData()
     {
          return new[]
          {
              new {this="1",that="2",theOther="special"},
              new {this="hello",that="world",theOther="something"}
          }
     }
 }

还是我需要自己实现一个完整的 LINQ 数据提供程序?如果是这样,有什么书或文章推荐吗?(我的 LINQ 知识目前基于对 Jon Skeet 的 C# In Depth 的全面阅读,仅此而已……)

4

1 回答 1

1

AList<T>通常就足够了(因为它实现了 IEnumerable)。但是,如果您想知道查询的实际性能,没有什么比使用实际的 RemoteServer 更好的了。

于 2012-10-10T15:10:06.113 回答