在C#中实现一个内容可哈希的HashSet(像python的`frozenset`)。
简短摘要 我想在C#中构建一组项目.项目的内部集具有由其内容定义的GetHashCode和Equals方法.在数学符号中: x = { } x.Add( { A, B, C } ) x.Add( { A, D } ) x.Add( { B, C, A } ) now x should be{ { A, B, C }, { A, D } } 在Python中,可以通过frozenset来完成. x = set() x.add( frozenset(['A','B','C']) ) x.add( frozenset(['A','D']) ) x.add( frozenset(['B','C','A']) ) /hiversummary 我想在c#中有一个可放大标签.这可以让我做: HashSet> setOfSets; 尽管有更复杂的方法可以实现这一目标,但通过添加覆盖ContentHasha
14 2024-04-26
编程技术问答社区
在Windows Azure Blob存储容器中列出空目录
我想列出Azure Blob存储容器的所有目录,包括空的.列出目录的方法有很多,我可以做到这一点.谁能告诉我如何也获得空目录? 解决方案 BLOB服务上没有一个空目录. BLOB服务上的目录是虚拟的.当您创建X/Y/Z时,我们实际上并未创建目录'x'和目录'y' - 我们创建一个名称x/y/z的斑点.为了方便起见,我们允许您使用定界符'/'列出X返回X的目录.但是,如果您删除blob x/y/z,并且没有其他斑点,前缀x/y,x和y只会停止被列为目录. 如果您想要一个更直接的并行文件系统概念,包括对空目录的支持,请查看Azure文件.
2 2024-04-25
编程技术问答社区
将硬编码的开关语句转换为动态加载的多键一值查询
什么是一个好的收集/容器,用于基本上存储带有多个秋季型情况的开关插件的内容?我想,一种更准确的方法是,"多键 - 一价"查找的好C#解决方案是什么?我检查了系统.收集名称空间及其关联的名称空间,但没有找到特别适合多个键的人. 最近,我为自己写了一个小型控制台程序,以构建和验证我的Web应用程序所需的XML文件,以避免手动编写它时发生的错误.但是对于初始版本,我编码了许多略有易变的元素 - 特别是一些验证词典和一个具有大量倒线选项的大型开关插入.尽管这将在接下来的几个月中工作,但可能有必要最终更新这些硬编码元素,这些元素目前需要编辑源文件.为了避免这种情况,我决定将词典和开关信息存储在XML文件中(最终以可怕的递归趋势进化,编写一个程序来构建和验证这些 em> XML文件给我).现在,在将其存储在文件中时,当我检索数据时,我不能像词典一样重建开关语句.因此,我只需要模拟开关语句的效果,这基本上意味着我需要几个"键"来引用相同的"值". 示例摘要来自Switch语句.此方法将将特
8 2024-04-25
编程技术问答社区
在C#可滚动的容器中控制尺寸调整时的抓取
我有一组我在可滚动控件中垂直堆叠的控件. 每个控件都包含文本(例如iPhone上的消息气泡),气泡根据文本的高度进行调整. 我遇到的问题是,当我调整父尺寸的时候,所以它较小,气泡开始重叠,当我调整大小以使气泡是单线时,每个气泡之间的空间太多了. 我想做的是让每个气泡在其上方的气泡上捕捉到10分的顶部,这是可能没有任何闪烁的最快方法(因为目前没有闪烁的调整大小) 我已经考虑过将每个控件嵌入另一个父母(例如,网格控制行),但是添加的每个气泡将负责调整自己的父级,然后锚将不再适用于他们的顶部,左,和正确的定位. 如何完成? (对不起,由于复杂性和细节,该问题的详细信息上面是一个简单的一个班轮问题,因为它实际上无法措辞) ) 预先感谢:) 根据要求,屏幕截图和代码 这是通常的视图 调整大小后,然后向下滚动到不在可见段中的控件 并调整大小,然后向后滚动 现在好东西.....代码..... 这是我自定义控件的代码: using Sy
0 2024-04-24
编程技术问答社区
拦截进入docker容器的键盘按键
我正在尝试将游戏机应用程序游戏包裹到Docker容器中,有必要捕获按键盘上按下的箭头键. 代码是: public static Direction ReadInputDirection() { var key = Console.ReadKey(intercept: true); switch (key.Key) { case ConsoleKey.UpArrow: return Direction.Up; case ConsoleKey.DownArrow: return Direction.Down; case ConsoleKey.LeftArrow: return Direction.Left; case ConsoleKey.RightArrow: return Directi
14 2024-04-24
编程技术问答社区
四分之一圆圈形状,飘带上有一个容器
我想拥有一个四分之一圆形的容器,想想四分之一的披萨. 我该如何实现?基本上,我想将其放在右下位置的另一个容器的顶部,圆形朝内和右下角的角度匹配,右下角形成底部容器,使用堆栈窗口小部件. 谢谢. 解决方案 您可以使用CustomPainter与ClipRect组合绘制圆圈并裁剪. enum CircleAlignment { topLeft, topRight, bottomLeft, bottomRight, } class QuarterCircle extends StatelessWidget { final CircleAlignment circleAlignment; final Color color; const QuarterCircle({ this.color = Colors.grey, this.circleAlignment = CircleAlignment.topLeft,
24 2024-04-22
编程技术问答社区
在 docker 运行时使用 args 执行命令并覆盖入口点
我试图使用接受参数的脚本执行docker图像中的入口点,并且失败如下 ▶ docker run --entrypoint "/bin/sh -c 'my-script.sh arg1 arg2'" my-image:latest docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "/bin/sh -c 'myscript.sh arg1 arg2'": stat /bin/sh -c 'my-script.sh arg1 arg2': no such file or directory: unknown. 但是,当我执行到容器时,上述命令成功: ▶ docker run --entrypoint sh -it my-image:latest ~ $ /bin/sh -
30 2024-04-22
编程技术问答社区
从C5通用集合库中的小规模集合相对来说非常慢,有什么办法吗?
我最近一直在C#中测试C5收集,我很喜欢它们的功能.对于大型收藏,表演似乎与通用对应物相当.对于小型收藏,它们的速度明显较慢.我怀疑相对速度的急剧恶化来自C5收集执行的恒定时间操作.我知道的一项操作是射击事件.这可能是小型收藏表现不佳的原因吗?可以通过关闭一些功能来解决这一点吗?在这里'性能测试: //Two containers to be tested. 'Test' is a wrapper over decimal. var arrayList = new C5.ArrayList(); var genericList = new System.Collections.Generic.List(); var toBeAdded = new List(); var watch = new Stopwatch(); //Fill both tested containers for (int i = 10; i > 0; i--) {
0 2024-04-21
编程技术问答社区
使用Unity在构造函数中使用的属性依赖性注入
好吧,我有一个在基类中定义的依赖性属性,并且我正在尝试在其派生类的构造函数内使用它,但该属性不起作用,该属性显示为null. Unity在用container.resolve()解决实例之后,可以解决依赖性属性. 我有一种选择是在我的myViewModel类构造函数中添加一个iunityContainer参数,并将Ilogger属性设置为我的自我: public MyViewModel(IUnityContainer container) { Logger = container.Resolve(); } 编辑: @wiktor_zychla的另一个建议是通过注射构造函数的参数为​​: public MyViewModel(ILogger _logger) { Logger = _logger; } 这似乎很好,但是我必须为我所有派生的ViewModels做到这一点. ,但是我没有在基类中使用带注释的ilogger依赖性. 请
无法下载Azure Blob到流媒体
我正在使用Azure Blob存储来保存一些文件.我在下载此流时遇到问题,不确定为什么.我没有任何错误,只是一个空的流.我已经验证了该文件是否存在于容器中,甚至运行代码以列出容器中的所有文件.任何帮助将不胜感激. private async Task GetMemoryStreamAsync(string fileName) { var storageAccountName = Environment.GetEnvironmentVariable("storage_account_name"); var storageAccountKey = Environment.GetEnvironmentVariable("storage_access_key"); var storageContainerName = Environment.GetEnvironmentVariable("storage_container_name");
10 2024-04-20
编程技术问答社区
如何检查一个键是否已经存在于容器中?
我正在构建多个客户之间安全消息传递的应用程序.为了实现这一目标,我将消息加密AES,然后将AES密钥加密到收件人公共RSA密钥,然后将这两个组件(RSA加密AES密钥和AES加密的消息)发送给收件人.整个过程效果很好,没有任何错误. 现在我遇到了一个问题,我想知道最好的做法是什么:为了坚持一个参与者的私钥和公钥,我需要存储密钥对.可以将其作为XML文件保存在某个地方,但显然不是一个选项.因此,决定使用一个密钥容器,例如 检查是否已经存在指定的容器? 检查密钥大小是否匹配给定值? 据我所知,这是不可能的,因为如果不存在该容器,则rsacryptoserviceProvider会生成一个新键 - 但请勿说明.但是我需要知道是否有以前存储的密钥对可用或创建了一个新的密钥对. 我该如何解决?还是这是完全错误的方法? 解决方案 尝试以下方法: public static bool DoesKeyExists(string containerName)
8 2024-04-19
编程技术问答社区
如何使用ListBlobsSegmentedAsync从Azure BLOB目录中获取所有文件?
在尝试访问Azure Blob文件夹的所有文件时,获取container.ListBlobs();的示例代码,但是看起来像一个旧的文件. 旧代码:container.ListBlobs(); 新代码尝试:container.ListBlobsSegmentedAsync(continuationToken); 我试图使用以下代码: container.ListBlobsSegmentedAsync(continuationToken); 文件夹就像: Container/F1/file.json Container/F1/F2/file.json Container/F2/file.json 寻找更新版本以从Azure文件夹获取所有文件. 任何示例代码都会有所帮助,谢谢! 解决方案 更新: 通过 azure.storage.blobs v12 - package 从目录中获取所有文件名 var storageConnectionStrin
16 2024-04-19
编程技术问答社区
列出Windows Azure Blob存储容器中的目录
我有一个关于我的项目的问题...我需要知道如何从Windows Azure Blob存储中列出所有文件夹(在字符串列表或其他文件中)存储. 谁可以帮助我解决这个"问题"? 解决方案 尝试此代码.它使用存储客户库库2.0.3 : CloudStorageAccount storageAccount = CloudStorageAccount.DevelopmentStorageAccount; CloudBlobContainer blobContainer = storageAccount.CreateCloudBlobClient().GetContainerReference("wad-control-container"); string blobPrefix = null; bool useFlatBlobListing = false; var blobs = blobConta
4 2024-04-18
编程技术问答社区
stl C++和C#容器之间的映射
有人可以指出通常的C ++ STL容器(例如向量,列表,映射,设置,多映射...和C#通用容器)之间的良好映射? 我已经习惯了以前的人,我以某种方式习惯于用这些容器来表达算法.我很难找到与那些等同的c#. 谢谢! 解决方案 这是粗糙等价: Dictionary unordered_map HashSet unordered_set List vector LinkedList list .net bcl(base类库)没有红色树木(stl map)或优先级队列(make_heap(),push_heap(),pop_heap()). .NET收集不使用C ++的方式使用"迭代器".他们都实现了IEnumerable,并且可以使用" foreach语句"进行迭代.如果您想手动控制迭代,则可以在收藏集上调用" GetEnumerator()",该集合将返回IEnumerator o
10 2024-04-14
编程技术问答社区
C#堆栈队列组合
在c#中是否有一些已经定义的通用容器,可以同时用作堆栈和队列? 我只想能够将元素附加到末尾,或者是队列的前部 的前部 谢谢 解决方案 检查 linkedlist "> linkedlist class. LinkedList list = new LinkedList(); list.AddFirst(1); list.AddLast(2); list.AddFirst(0); 其他解决方案 这是我对不变的Deque的实现: http://blogs.msdn.com/ericlippert/archive/2008/02/02/immutability-in-c-part-eleven-eleven-eeleven-eeleven-eeleven-working-double-double-queue.aspx 请注意,这是 double-dended-quesue.通常,您可能会认为队列是您突变的东西: queue.En
12 2024-04-14
编程技术问答社区
C#: 在异构的字典上暴露类型安全的API
我想通过特定的JSON格式公开类型的安全API.这基本上是我到目前为止所拥有的: public class JsonDictionary { Dictionary _keyTypes = new Dictionary { { "FOO", typeof(int) }, { "BAR", typeof(string) }, }; IDictionary _data; public JsonDictionary() { _data = new Dictionary(); } public void Set(string key, T obj) { if (typeof(T) != _keyTypes[key])
0 2024-04-14
编程技术问答社区
我怎样才能在C#中编写一个实现给定接口的通用容器类?
上下文:.NET 3.5,VS2008.我不确定这个问题的标题,所以请随时评论标题:-) 这是场景:我有几个类,例如foo和bar,所有这些都实现了以下接口: public interface IStartable { void Start(); void Stop(); } 现在,我想拥有一个容器类,它可以在其构造函数中获得一个iEnumerable .反过来,此类也应实现iStartable接口: public class StartableGroup : IStartable // this is the container class { private readonly IEnumerable startables; public StartableGroup(IEnumerable startables) { this.startables = st
6 2024-04-11
编程技术问答社区
如何从一个表单中获取所有控件 包括任何容器中的控件?
例如,我需要一种禁用表单中所有按钮或验证所有TextBox的数据的方法.有任何想法吗?预先感谢! 解决方案 最简单的选项可能是级联: public static void SetEnabled(Control control, bool enabled) { control.Enabled = enabled; foreach(Control child in control.Controls) { SetEnabled(child, enabled); } } 或类似;您当然可以通过代表来使其相当通用: public static void ApplyAll(Control control, Action action) { action(control); foreach(Control child in control.Controls) { ApplyAll(chil
2 2024-04-11
编程技术问答社区
在.NET中是否有一个排序的集合类型?
我正在寻找一个容器,该容器将其所有物品保持顺序保留.我查看了SortedList,但这需要一个单独的键,并且不允许重复键.我也可以只使用一个未分类的容器,然后在每次插入后明确对其进行排序. 用法: 偶尔插入 顺序频繁遍历 理想情况下,不使用与实际对象分开的键,使用比较函数进行排序. 需要进行等效对象的稳定分类,但不是必需的. 不需要随机访问. 我意识到我只能建立一个平衡的树结构,我只是想知道该框架是否已经包含了这样的野兽. 解决方案 您可能想看看其他解决方案 只是为了制作 自.NET 4.0以来.当然是一组,这意味着您不能重复. 其他解决方案 如果您只想坚持标准集合,则List类的Sort(IComparer)函数通常会被忽略.您需要做的就是为您的对象创建合适的Comparer.例如: public class PositionDateComparer : IComparer { pu
0 2024-04-11
编程技术问答社区
带有宏的类型安全的通用容器
我正在尝试使用宏中的C中的类型保护通用链接列表.它应该与模板在C ++中的工作方式相似.例如, LIST(int) *list = LIST_CREATE(int); 我的第一次尝试是#define LIST(TYPE)(我上面使用的宏)来定义struct _List_##TYPE {...}.但是,这无效,因为每次我宣布新列表时,结构都会重新定义.我通过这样做解决了问题: /* You would first have to use this macro, which will define the `struct _List_##TYPE`... */ DEFINE_LIST(int); int main(void) { /* ... And this macro would just be an alias for the struct, it wouldn't actuall
4 2024-04-07
编程技术问答社区