我正在使用 RxViz 来模拟每 1 秒出现一次的不同动作。当我尝试
Rx.Observable.create(obs => {
obs.next([1, 2, 3]); // or could be ['aaa', 'bbbb', 'ccc']
obs.complete();
}).delay(1000);
Run Code Online (Sandbox Code Playgroud)
或者我自己使用 console.log
它一直同时显示三个数字 1, 2, 3
有一篇关于同样问题的帖子,但没有一个答案对我有用。我正在使用 Rx 最新版本 6
[编辑] 数组可以包含任何东西,如数字、字符串或任何对象
处理从另一个聚合发布的聚合中的事件是否正确?或者一个域应该只处理命令?
就我而言,我有一个管理设置的应用程序.我有一个应用程序的聚合和applicationGroup的聚合.当我想为特定的一组应用程序创建设置时,该命令由我的applicationGroup处理,然后applicationGroup发布一个事件GroupSettingsCreated,但DDD是否说我们可以直接在我的ApplicationAggregate中处理这个事件?或者我应该在事件处理程序中处理此事件,将其映射到命令然后将其发送到我的ApplicationAggregate?
谢谢
约翰
这是我的目标:
public class Symbol
{
private readonly string _identifier;
private readonly IList<Quote> _historicalQuotes;
public Symbol(string identifier, IEnumerable<Quote> historicalQuotes = null)
{
_identifier = identifier;
_historicalQuotes = historicalQuotes;
}
}
public class Quote
{
private readonly DateTime _tradingDate;
private readonly decimal _open;
private readonly decimal _high;
private readonly decimal _low;
private readonly decimal _close;
private readonly decimal _closeAdjusted;
private readonly long _volume;
public Quote(
DateTime tradingDate,
decimal open,
decimal high,
decimal low,
decimal close,
decimal closeAdjusted,
long volume)
{
_tradingDate = …Run Code Online (Sandbox Code Playgroud) 以下代码是异步检索来自多个URL的内容,并且只要通过Task.WhenAny下载了一个内容,就会对其进行处理.但在处理过的部分,我需要Identifier对象.我认为向您展示代码更清楚:
var downloadTasks = new List<Task<string>>();
foreach (var identifier in input.Identifiers)
{
string url = BuildUrl(identifier, input.PeriodInYear, input.Interval);
var data = _webRequest.GetData(url, token);
downloadTasks.Add(data); // Here I only add the data, but not the Identifier. I thought about using a List<Tuple<Identifier, Task<string>>, but then I can't use it with Task.WhenAny(...)
}
while (downloadTasks.Count > 0)
{
var finishedDownloadTask = await Task.WhenAny(downloadTasks);
downloadTasks.Remove(finishedDownloadTask);
foreach (var content in await finishedDownloadTask)
{
// hereI I also need the Identifier object here !
} …Run Code Online (Sandbox Code Playgroud) 我想了解为什么冻结冻结的模拟类而不是模拟的接口时测试失败
[Fact]
public void MethodeName()
{
var fixture = new Fixture().Customize(new AutoMoqCustomization());
var webRequestMock = fixture.Freeze<Mock<MyWebRequest>>(); // freezing a class + setuping a return value
webRequestMock.Setup(a => a.GetData())
.Returns("Foo");
var myService = fixture.Create<MyService>();
var actual = myService.GetData();
webRequestMock.Verify(a => a.GetData(), Times.Once()); // Failed it's never called once
Assert.Equal("Foo", actual); // Failed, if we comment previous line, 'actual' value is always empty
}
public class MyService
{
private readonly MyWebRequest _request;
public MyService(MyWebRequest request)
{
_request = request;
}
public string …Run Code Online (Sandbox Code Playgroud) 我为MongoDB使用10gen C#驱动程序,我想从子文档中删除一个子文档.我不知道怎么做.
这是一个看起来像我的文档的例子
{
"_id": "binary_stuff",
"Name": "MyApplication",
"Settings": [
{
"_id": "binary_stuff",
"Key": "ImportDirectory",
"Value": "C:\data",
"Overrides": [{
"_id": "binary_stuff",
"Name": "PathDirectory",
"Value": "C:\anotherData"
}]
},
}
Run Code Online (Sandbox Code Playgroud)
我想删除覆盖哪个名称是PathDirectory.这是我写的查询,但它不起作用.我没有错误.
var query = Query.And(Query.EQ("_id", applicationId), Query.EQ("Settings.Key", "ImportDirectory"), Query.EQ("Settings.$.Overrides.Name", "PathDirectory"));
Run(database => database.Applications().Remove(query));
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.约翰
我的应用程序使用 CQRS 架构。一切都通过我的聚合执行,因此每个用户的操作都作为事件保存在我的事件源存储中。
现在,我需要一个新表单来显示在我的应用程序中执行的每个操作的历史记录,那么我该怎么办?
1 - 读取事件存储?如何 ?
2 - 在我的每个域处理程序中发布一个事件,例如“SavedToHistory(User user, Action action, DateTime date) 然后在我的事件处理程序中,将其存储在我的读取数据模型中?
我们如何使用C#和mongoDB重命名嵌入字段?文档Person的一个例子是:
{
Id: 1,
LastName: "Smith",
FirstName: "John",
Orders: {
Id: 1,
Name: "Trousers" // I want to rename **Name** into **Something**
}
}
Run Code Online (Sandbox Code Playgroud)
使用mongoDB语法,它会是这样的
db.Users.update({}, {$rename:{"Orders.Name":"Orders.Something"}},true, true)
Run Code Online (Sandbox Code Playgroud)
谢谢.
我有一个gridview,我们可以通过不同的标准进行过滤.每个标准都是表达式.我有一个场景,我可以有超过一千个标准,导致我的表达式在调用Compile方法时抛出一个StackOverflow.
我仍然是使用表达式树btw的初学者.
这是我重现stackoverflow的一个例子.
var param = Expression.Parameter(typeof(SomeEntity), "SomeEntity");
Expression finalExpression = Expression.Default(typeof(bool));
for (int i = 0; i < 20000; i++) // Create 20000 expressions
{
var left = Expression.Property(param, "OrderID");
var right = Expression.Constant(42.ToString());
var expression = BinaryExpression.Equal(left, right);
finalExpression = Expression.OrElse(finalExpression, expression);
}
var hello = Expression.Lambda(finalExpression, param);
hello.Compile();
Run Code Online (Sandbox Code Playgroud)
我的问题是:有没有办法"减少"这个表达式或任何其他阻止堆栈溢出的解决方案?
谢谢
注意:这是调试器中表达式的样子:
(SomeEntity.OrderID == "42"))
OrElse (SomeEntity.OrderID == "42"))
OrElse (SomeEntity.OrderID == "42"))
OrElse (SomeEntity.OrderID == "42"))
OrElse (SomeEntity.OrderID == "42"))
x20000
Run Code Online (Sandbox Code Playgroud) 我有一个类似的问题而不是这篇文章:C#字符串拆分,但它有点旧,并使用Regex作为解决方案.
所以这是我的输入(字符串数组)
foo.xml
bar.png
pdf
Run Code Online (Sandbox Code Playgroud)
我想要的是检索没有点的文件扩展名,并在没有找到点时设置"未知".
xml
png
unknown
Run Code Online (Sandbox Code Playgroud)
我尝试过的东西不起作用
_filesName.Select(a => a.Split('.').Select(b => string.IsNullOrEmpty(b) ? "unknown":b).Last());
Run Code Online (Sandbox Code Playgroud)
返回
xml
png
pdf // WRONG!! Why its not set to unknown?
Run Code Online (Sandbox Code Playgroud)
是否可以使用LINQ做我想做的事情?
c# ×8
autofixture ×2
mongodb ×2
.net ×1
asynchronous ×1
cqrs ×1
linq ×1
moq ×1
refactoring ×1
rxjs ×1
unit-testing ×1