小编Gra*_*ank的帖子

Visual Studio C#语句折叠

当编辑真正长的代码块时(无论如何它肯定会被重构,但这超出了这个问题的范围),我经常渴望能够折叠语句块,就像可以折叠功能块一样.也就是说,如果在括号中包含的所有内容的代码轮廓上出现减号图标,那将会很棒.它似乎出现在函数,类,区域,命名空间和使用中,但不适用于条件或迭代块.如果我可以崩溃像ifs,switch,foreaches这样的东西,那将是太棒了!

谷歌搜索到这一点,我发现显然在VS中的C++概述允许这样但在VS中的C#概述却没有.我真的不明白为什么.如果我选择C#格式化,即使是notepad ++也会崩溃,所以我不明白为什么Visual Studio没有.

有没有人知道VS2008加载项会启用此行为?或者某种隐藏的设置呢?

编辑添加:插入区域当然是一个选项,它确实已经发生在我身上,但坦率地说,我不应该把事情包裹在已经用括号括起来的区域......如果我要编辑现有的代码,我只是重构它,以便更好地分离关注点.(用新方法代替区域"包装";)

c# ide text-editor outlining visual-studio-2008

180
推荐指数
3
解决办法
8万
查看次数

使用Nullable <value>类型的条件运算符赋值?

EmployeeNumber =
string.IsNullOrEmpty(employeeNumberTextBox.Text)
    ? null
    : Convert.ToInt32(employeeNumberTextBox.Text),
Run Code Online (Sandbox Code Playgroud)

我经常发现自己想要做这样的事情(EmployeeNumberNullable<int>因为它是在LINQ到SQL的DBML对象,其中列允许NULL值的属性).不幸的是,编译器认为"'null'和'int'之间没有隐式转换",即使这两种类型在对自己的可空int的赋值操作中都是有效的.

由于内联转换需要在.Text字符串上发生(如果它不为空),因此Null合并运算符不是我能看到的选项.

据我所知,唯一的方法是使用if语句和/或分两步进行分配.在这种特殊情况下,我发现非常令人沮丧,因为我想使用对象初始化器语法,这个赋值将在初始化块中...

谁知道更优雅的解决方案?

c# nullable conditional-operator

58
推荐指数
3
解决办法
2万
查看次数

使用javascript文件中的ASP.NET资源字符串

如何将resx资源字符串转换为存储在.js文件中的javascript代码?

如果您的javascript位于标记的脚本块中,则可以使用以下语法:

<%$Resources:Resource, FieldName %>
Run Code Online (Sandbox Code Playgroud)

并且它将在渲染页面时解析资源值...不幸的是,只有当javascript出现在页面正文中时才会解析.在<script>标记中引用的外部.js文件中,这些服务器标记显然从未被解析过.

我不想编写ScriptService来返回那些资源或类似的东西,因为它们在页面呈现后不会改变,因此有一些活动的东西是浪费.

一种可能性是编写一个ashx处理程序并将<script>标记指向它,但我仍然不确定如何在.js文件中读取并在将文本流式传输到客户端之前解析任何类似的服务器标记.是否有一行代码可以运行,它将像ASP.NET解析器一样执行该任务?

或者有没有人有任何其他建议?

javascript asp.net resources

28
推荐指数
3
解决办法
4万
查看次数

捕获异常作为预期的程序执行流程控制?

我总是觉得期望定期抛出异常并将它们用作流逻辑是一件坏事.例外情况应该是,他们应该是" 例外 ".如果你期望并计划一个异常,这似乎表明你的代码应该被重构,至少在.NET中......
但是.最近的一个场景让我停下来.我刚刚在msdn上发布了这个,但是我想对它进行更多的讨论,这是一个完美的地方!

所以,假设你有一个数据库表,其中有几个其他表的外键(在最初提示辩论的情况下,有4个外键指向它).您希望允许用户删除,但仅限于没有外键引用; 你不想级联删除.
我通常只是检查是否有任何引用,如果有,我通知用户而不是删除.在LINQ中编写它是非常容易和轻松的,因为相关表是对象的成员,所以Section.Projects和Section.Categories等等很好用intellisense和所有类型...
但事实是LINQ然后必须潜在地检查所有4个表以查看是否有任何结果行指向该记录,并且命中数据库显然总是相对昂贵的操作.

这个项目的负责人让我把它改成只捕获一个代码为547(外键约束)的SqlException并以这种方式处理它.

我......
抗拒.

但是在这种情况下,吞下与异常相关的开销可能比吞下4个表命中更有效...特别是因为我们必须在每种情况下进行检查,但我们在这种情况下没有例外当没有孩子的时候......
加上数据库真的应该是负责处理参照完整性的人,这是它的工作而且做得很好......
所以他们赢了,我改变了它.

在某种程度上,我觉得我觉得不对.

你们对期望和故意处理异常有什么看法?它看起来比预先检查更有效吗?对于下一个查看代码的开发人员来说,更令人困惑的是它更令人困惑吗?它是否更安全,因为数据库可能知道开发人员可能不会考虑添加检查的新外键约束?或者是关于你认为最佳实践究竟是什么的观点?

.net sql sql-server exception-handling

11
推荐指数
2
解决办法
1429
查看次数

Kubernetes配置图中的自动子目录?

(大约2年前提出了一个非常类似的问题,尽管它专门涉及秘密,但我怀疑这个故事对于configmaps是否有所不同...但是至少,我可以介绍用例以及为什么现有解决方法不存在对我们而言可行)。

给出一个简单的简化方法deployment.yaml

apiVersion: apps/v1beta1
kind: Deployment
metadata: 
  name: example
spec:
  template: 
    spec:
      containers:
      - name: example
        volumeMounts:
        - name: vol
          mountPath: /app/Configuration
      volumes:
        - name: vol
          configMap:
            name: configs
Run Code Online (Sandbox Code Playgroud)

和匹配configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: configs
  labels:
    k8s-app: example
data:
    example1.json: |-
        {
            "key1": "value1"
        }

    example2.json: |-
        {
            "key2": "value2"
        }
Run Code Online (Sandbox Code Playgroud)

configmap.yaml不管它们中的键是什么,它们都可以简单地创建为文件,而无需deployment.yaml修改或具有mountPath以外的任何其他细节。

问题在于实际结构具有子文件夹来处理特定于区域的值,这些值会覆盖根值:

Configuration \ example1.json
Configuration \ example2.json
Configuration \ us \ example1.json
Configuration \ us \ ca \ example2.json …
Run Code Online (Sandbox Code Playgroud)

yaml subdirectory kubernetes

10
推荐指数
2
解决办法
2412
查看次数

从XSD架构生成C#代码时,如何让数组的名称不是"Items"?

我正在开发一个项目,该项目必须连接到一些古老的Web服务,这些Web服务将请求和响应的一些分层数据打包成单个分层XML字符串.

我一直在使用xsd.exe从示例请求和响应XML片段生成XSD,在必要时修改它们以获得最佳定义,并再次使用xsd.exe生成C#对象.然后,调用web服务的管理器可以将这些强类型请求对象作为参数,将它们序列化为字符串以进行调用,将响应作为字符串返回,将它们反序列化为强类型响应对象并返回它们.

如果我有一个字符串列表,我可以有一个有效的XSD,它认为它是一个复杂类型的无界xs:选择xs:string元素,然后它会反序列化为一个字符串数组,这很好,处理起来很简单.令人烦恼的问题是,由于某种原因,似乎没有任何方法可以让它调用除" Items " 之外的任何字符串数组.无论什么我添加到架构,我不能让XSD.EXE写任何其他名称.

这是一个示例XSD架构:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="AccountStatusRequest" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="AccountStatusRequest">
        <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded" id="AccountRowIDs">
                <xs:element nillable="true" type="xs:string" id="AccountRowID" name="AccountRowID"/>
            </xs:choice>
        </xs:complexType>
    </xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)

由此产生的课程:

public partial class AccountStatusRequest {

    private string[] itemsField;

    [System.Xml.Serialization.XmlElementAttribute("AccountRowID", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=true)]
    public string[] Items {
        get {
            return this.itemsField;
        }
        set {
            this.itemsField = value;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试将intellisense中的每个msdata:属性添加到选择和内部元素中,没有任何区别.

仅仅为了论证,我为该complexType添加了一些额外的类似选择,看看是否会强制它使用字符串数组的名称,而是它给了我Items,Items1,Items2 ......

我真的不希望它必须是一个只拥有字符串的自己类型的数组,但我也真的不想留下它叫做" Items ",没有xml注释(有没有人知道如何添加THOSE到一个xsd?),它应该有一个更具描述性的名称.我绝对不能只是手动将其更改为Web服务模式更改时所需的工作流程,即更改XSD然后从中重新生成类.

这似乎是xsd.exe应该支持的另一个东西.有什么我想念的吗?我应该以某种方式采取不同的方法吗?或者是否有一种替代工具可以用于此而不是跛脚?

.net attributes xsd code-generation web-services

4
推荐指数
2
解决办法
2036
查看次数