我找不到相关的问题.
在python你可以很容易地通过一个序列(循环list,generator等等),并收集迭代的索引,同时由于在以enumerate(seq)这样的:
>>> for (i,item) in enumerate(["toto","titi","tutu"]):
... print i, item
...
0 toto
1 titi
2 tutu
Run Code Online (Sandbox Code Playgroud)
IEnumerable是否有类似的东西,例如,会变换IEnumerable<T>a IEnumerable<Tuple<Int32,T>>?
(我知道它很容易完成,这要归功于Select()......中的正确功能,但如果它存在,我宁愿使用它:))
更新 FYI,我很好奇能够做出类似的事情:"给我满足这个条件的最后一项的索引",然后通过以下方式完成:
myEnumeration.First(t => some condition on t.Item2 ... ).Item1;
Run Code Online (Sandbox Code Playgroud) 我发现了一些关于如何组织项目的问题(命名空间,每个文件一个类等),但更具体的说明,你如何组织非常紧密相关的"事物"?
我通常最终得到:
IMyStuffBaseMyStuffMyStuffWithBellsAndWhistles, MyStuffWithChocolateFlavours似乎有意义的是它们应该在同一个命名空间中,但是如果我将所有这些文件放在同一个文件夹中(感觉不是真正的问题,但感觉很奇怪),感觉我的文件夹开始有点过于拥挤).
可以在同一个文件中定义接口和基类吗?
或者可以将这些东西分组到子文件夹中,但是在同一名称空间中?像这样 :
-MyNamespace
|-Interfaces
| -IMyStuff
| -IMyOtherStuff
|-BaseClasses
| -BaseMyStuff
| -BaseMyOtherStuff
|-Implementation
| -MyStuffWithAwesomeBehaviour
| -MyStuffWithGreatUsefulness
| -MyOtherStuffSoNeatYouWillCry
Run Code Online (Sandbox Code Playgroud)
关于这种组织的"最佳实践"是什么?
当存在歧义时,SQL Server如何处理登录,例如,Windows用户帐户和包含此用户的AD组都存在登录?
我们在SQL Server 2008中使用Active Directory中的Windows用户和该AD中的组的权限存在一些问题.我将尝试用一个例子来解释.
想象一下DOMAIN\myUser属于AD组的Windows域用户DOMAIN\SomeGroup.
在SQL Server中,我有2个数据库SomeAppDb和PublicDb.
目标是作为成员的所有用户都DOMAIN\SomeGroup应该能够访问PublicDb,但只能DOMAIN\myUser访问SomeAppDb.
最初,在SQL Server中,在DOMAIN\SomeGroup实例上创建了一个Windows登录(映射到AD组),并且在PublicDb具有适当角色成员资格的数据库中创建了一个用户,并且该用户运行良好,来自组的用户SomeGroup可以访问他们所需的数据PublicDb.
为了满足新应用程序的需求,我们希望为用户提供db SomeAppDb的显式访问权限DOMAIN\myUser,同时仍允许访问PublicDb.因此,我们在SQL Server中创建了一个Windows登录名DOMAIN\myUser,并在数据库中创建了一个User,并SomeAppDb在2之间进行了映射.
从那时起,myUser可以SomeAppDb按预期访问,但无法再访问PublicDb,我们遇到如下错误:
Cannot open database "PublicDb" requested by the login. The login failed.
Login failed for user 'DOMAIN\myUser'
Run Code Online (Sandbox Code Playgroud)
我的直觉告诉我,当用户访问SQL Server实例时,SQL Server会看到与Windows用户匹配的登录,并忽略用户所属组的现有登录.
一种方法是明确地为用户myUser在db PublicDb上添加访问权限,但我宁愿避免使用该解决方案,因为每次我们想要访问新用户时它都会强制更新PublicDb,这正是我们最初想要避免的... (我们这样做是临时修复,希望找到更好的选择).
还有其他人遇到过这个问题吗?有更好的方法吗?
提前致谢
在某些情况下,我想在消息中添加上下文信息(例如当前已验证的用户),而不必将其包含在消息模板中。
我想做到这一点:
logger.Information("Doing stuff {Foo} with the thing {Bar}. {User}", foo, bar, user)
Run Code Online (Sandbox Code Playgroud)
但{User}模板中没有。
我已经知道了,LogContext但是将上下文信息添加到一个事件中似乎太过分了。
我也知道我可以使用低级API logger.Write(LogEvent evnt)来实际控制包括哪些属性,但是对于我要完成的工作来说似乎有点过多的代码。
我很确定有一种简短而优雅的方法非常明显,但是我还没有找到它:)
更新:
之后我才发现这个问题或多或少是相似的:向Serilog添加自定义属性
我们目前开始将事件从一个中央应用程序广播到其他可能感兴趣的消费者应用程序,并且我们团队的成员对于应该在已发布的消息中放入多少内容有不同的选择。
总体思路/架构如下:
基于企业集成模式,我们正在尝试为我们发布的消息定义规范格式,并且在两种方法之间犹豫:
极简消息/ event-store-ish:对于域模型发布的每个事件,生成一条消息,其中仅包含相关的聚合根部分(例如,当更新完成时,仅发布有关更新部分的信息聚合根的,或多或少匹配最终用户在使用我们的应用程序时经历的过程)
优点
缺点
完全包含的幂等消息:对于域模型发布的每个事件,生成一条消息,其中包含该时间点聚合根的完整快照,因此实际上只处理两种消息“创建或更新”和“删除”(+元数据,如有必要,包含更具体的信息)
优点
缺点
您会推荐一种方法而不是另一种方法吗?
我们还应该考虑另一种方法吗?
domain-driven-design message-queue integration-patterns rabbitmq
我有一个方法,希望将参数作为自定义Enum类型的数组.
看起来像这样的东西:
public void DoSomething(WhatDoIPutHere[] parameters)
Run Code Online (Sandbox Code Playgroud)
我想传递给这个方法a Enum1[]或者Enum2[]where Enum1和Enum22 Enum种类型.
我需要使用什么而不是WhatDoIPutHere?
我本来希望定义DoSomething的签名,因为Enum[]它以某种方式Enum是Enum类型的基类(对吧?):
public void DoSomething(Enum[] parameters)
Run Code Online (Sandbox Code Playgroud)
但它给出了:
无法从'xxx.Enum1 []'转换为'System.Enum []'
我也尝试将其定义为object[]但我得到了同样的编译器错误..
我知道这是完全臭的代码,如果我能,我肯定会摆脱它...