小编And*_*ite的帖子

.NET - 使用单个using语句替换嵌套的using语句

如果您使用嵌套的using语句/资源遇到了一些这样的C#代码:

using (var response = (HttpWebResponse)request.GetResponse())
{
    using (var responseStream = response.GetResponseStream())
    {
        using (var reader = new BinaryReader(responseStream))
        {
            // do something with reader
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

用这样的东西替换它是否安全?

using (var reader = new BinaryReader(((HttpWebResponse)request.GetResponse()).GetResponseStream()))
{
    // do something with reader
}
Run Code Online (Sandbox Code Playgroud)

上面的例子只是嵌套的一次性资源的一个例子,所以请原谅我,如果它不是完全正确的用法.我很好奇当你处理最外层的资源(在这种情况下是BinaryReader),它是否会为你递归处理它的子节点,或者你是否需要用单独的using语句显式地处理每个"层"?例如,如果您处置BinaryReader,它是否应该处理响应流,而响应流又会处理响应?考虑到最后一句话让我觉得你确实需要单独的using语句,因为没有办法保证包装器对象会处理内部对象.是对的吗?

.net c# nested idisposable using

6
推荐指数
2
解决办法
3808
查看次数

Apache.NMS.WCF

只是好奇是否有人搞乱了Apache.NMS.WCF代码.对于工作项目,我已经开始尝试将Apache.NMS WCF绑定与ActiveMQ集成.我已经取得了一些进展,但如果有人有任何链接或信息,我会非常感激.

wcf activemq-classic

5
推荐指数
1
解决办法
1758
查看次数

Hibernate/NHibernate中的枚举表

我们正在使用NHibernate,我们用于存储枚举类信息的常用模式之一是为枚举定义单独的表,并且仅使用枚举对主实体/表中的ID进行引用.一个简单的例子:

Message
-------
ID (bigint PK)
MessageTypeID (bigint FK)
Body (varchar)

MessageType
-----------
ID (bigint PK)
Value (varchar)
Run Code Online (Sandbox Code Playgroud)

MessageType表包含少量枚举值,如:SMS,MMS,PSMS等.

是否值得将枚举值放在这样的单独表中?我想枚举的专家是你可以在将来更容易地扩展它并且它更加规范化,但是你必须在每次获取消息时都进行连接.有没有一个突破点你会选择一个而不是另一个?

nhibernate enums hibernate

5
推荐指数
1
解决办法
3525
查看次数

C#字符串操作问题

这是一个简单的问题.我有一个应用程序,取一个像"13335557777"这样的电话号码,需要反转它并在每个号码之间插入一个点,如下所示:

"7.7.7.7.5.5.5.3.3.3.1."

我知道我可以使用StringBuilder和for循环来反转字符串并插入点,但是有一种聪明的方法可以在LINQ(或其他方式)中执行此操作吗?

注意:为此,我并不真正关心性能或内存分配或其他什么,只是好奇看看如何在LINQ中完成.

c# linq string

5
推荐指数
1
解决办法
2163
查看次数

ActiveMQ消息分组性能

有人在ActiveMQ中使用过消息分组功能吗?

http://activemq.apache.org/message-groups.html

对于我正在研究的项目来说,这将是一个非常有用的功能,但我很好奇这个功能如何扩展和执行.在我们的系统中,我们需要将消息分组为大约3-5条消息,因此我们将在进程运行时不断添加组.在这种情况下,似乎我们最终只是试图存储所有组的内存不足.

我对任何经历/想法/优点/缺点感兴趣.

messaging activemq-classic jms message-queue

5
推荐指数
1
解决办法
2570
查看次数

Java:跨多个服务器同步线程

我有一个问题,我需要为Windows上的Java服务跨多个不同服务器同步多个线程的处理.

在这个应用程序中,我在同一个JMS队列中有多个消费者线程拉取消息.消息以3或4组的形式出现,我需要确保每个组中的消息都是完全串行处理的.我需要某种同步机制来确保thread1是否关闭了一个消息,然后thread2从该组中提取下一条消息,thread2在开始处理它的消息之前等待thread1完成处理.

关于线程的分布式同步机制的任何建议?任何类型的解决方案都会很好(JMS解决方案,分布式缓存等)

注意:我们使用的JMS提供程序是ActiveMQ.

java multithreading distributed synchronization jms

5
推荐指数
2
解决办法
4304
查看次数

数据绑定并在setter中抛出异常

假设我有一个简单的课程

public class Person
{
  public string Name { get; set; }

  private int _age;
  public int Age
  {
    get { return _age; }
    set
    {
      if(value < 0 || value > 150)
        throw new ValidationException("Person age is incorrect");
      _age = value;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

然后我想为这个类设置一个绑定:

txtAge.DataBindings.Add("Text", dataSource, "Name");
Run Code Online (Sandbox Code Playgroud)

现在,如果我在文本框中输入了不正确的年龄值(比如说200),那么设置器中的异常将被吞下,在我更正文本框中的值之前,我将无法执行任何操作.我的意思是文本框无法放松焦点.这一切都是沉默的 - 没有错误 - 你只是不能做任何事情(甚至关闭表格或整个应用程序),直到你纠正价值.

这似乎是一个错误,但问题是:这是一个解决方法是什么?

.net data-binding setter exception winforms

5
推荐指数
1
解决办法
1742
查看次数

Azure - 在暂存部署中处理SSL

我有一个托管在Windows Azure中的Web应用程序.我们希望将SSL用于生产部署,并且我们为域提供了自定义域名和SSL证书,所有这些都在生产中设置并正常运行.

Web角色当前同时具有HTTP和HTTPS端点,但我们希望禁用HTTP端点并在生产中使用HTTPS.

如果我们删除HTTP端点,我的问题是:在Azure中处理Staging部署的HTTPS端点的最佳方法是什么?每次在Azure中执行新的分段部署时,它都会为您提供服务的新临时域名.在暂存中,我们是否应该根本不使用SSL证书,只是跳过所有浏览器警告,或者当域名随每个部署发生变化时,是否有办法在登台时使用SSL?或者当我们交换到生产时,有没有办法在Azure部署中"关闭"(HTTP)端点?

我最初的想法是创建两个具有不同端点的软件包,但是如果它们具有不同的端点配置,我不相信Azure会让您热插拔prod和staging deployments.

deployment ssl https azure

5
推荐指数
1
解决办法
3776
查看次数

初始化集合,以便用户不必

这可能是一个愚蠢的问题,但是有没有为用户初始化集合属性的常见做法,所以在类中使用之前,他们不必新建一个新的具体集合?

这些中的任何一个都优先于另一个吗?

选项1:

public class StringHolderNotInitialized
{
    // Force user to assign an object to MyStrings before using
    public IList<string> MyStrings { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

选项2:

public class StringHolderInitializedRightAway
{
    // Initialize a default concrete object at construction

    private IList<string> myStrings = new List<string>();

    public IList<string> MyStrings
    {
        get { return myStrings; }
        set { myStrings = value; }
    }
}
Run Code Online (Sandbox Code Playgroud)

选项3:

public class StringHolderLazyInitialized
{
    private IList<string> myStrings = null;

    public IList<string> MyStrings
    {
        // If user hasn't …
Run Code Online (Sandbox Code Playgroud)

c# collections

4
推荐指数
1
解决办法
1415
查看次数

在 log4j/log4net 中捕获标准输出

我有一个用 Java 写入标准输出的库。我想使用 log4j 在日志中捕获此输出。(这个库不是我写的,所以我无法控制库内的代码)。

是否有捷径可寻?System.setOut 是正确的方法吗?我传递给 System.setOut 的是什么?

另外,您将如何在 .NET/C# 中执行此操作?

c# java logging stdout

4
推荐指数
1
解决办法
4262
查看次数