如果您使用嵌套的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语句,因为没有办法保证包装器对象会处理内部对象.是对的吗?
只是好奇是否有人搞乱了Apache.NMS.WCF代码.对于工作项目,我已经开始尝试将Apache.NMS WCF绑定与ActiveMQ集成.我已经取得了一些进展,但如果有人有任何链接或信息,我会非常感激.
我们正在使用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等.
是否值得将枚举值放在这样的单独表中?我想枚举的专家是你可以在将来更容易地扩展它并且它更加规范化,但是你必须在每次获取消息时都进行连接.有没有一个突破点你会选择一个而不是另一个?
这是一个简单的问题.我有一个应用程序,取一个像"13335557777"这样的电话号码,需要反转它并在每个号码之间插入一个点,如下所示:
"7.7.7.7.5.5.5.3.3.3.1."
我知道我可以使用StringBuilder和for循环来反转字符串并插入点,但是有一种聪明的方法可以在LINQ(或其他方式)中执行此操作吗?
注意:为此,我并不真正关心性能或内存分配或其他什么,只是好奇看看如何在LINQ中完成.
有人在ActiveMQ中使用过消息分组功能吗?
http://activemq.apache.org/message-groups.html
对于我正在研究的项目来说,这将是一个非常有用的功能,但我很好奇这个功能如何扩展和执行.在我们的系统中,我们需要将消息分组为大约3-5条消息,因此我们将在进程运行时不断添加组.在这种情况下,似乎我们最终只是试图存储所有组的内存不足.
我对任何经历/想法/优点/缺点感兴趣.
我有一个问题,我需要为Windows上的Java服务跨多个不同服务器同步多个线程的处理.
在这个应用程序中,我在同一个JMS队列中有多个消费者线程拉取消息.消息以3或4组的形式出现,我需要确保每个组中的消息都是完全串行处理的.我需要某种同步机制来确保thread1是否关闭了一个消息,然后thread2从该组中提取下一条消息,thread2在开始处理它的消息之前等待thread1完成处理.
关于线程的分布式同步机制的任何建议?任何类型的解决方案都会很好(JMS解决方案,分布式缓存等)
注意:我们使用的JMS提供程序是ActiveMQ.
假设我有一个简单的课程
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),那么设置器中的异常将被吞下,在我更正文本框中的值之前,我将无法执行任何操作.我的意思是文本框无法放松焦点.这一切都是沉默的 - 没有错误 - 你只是不能做任何事情(甚至关闭表格或整个应用程序),直到你纠正价值.
这似乎是一个错误,但问题是:这是一个解决方法是什么?
我有一个托管在Windows Azure中的Web应用程序.我们希望将SSL用于生产部署,并且我们为域提供了自定义域名和SSL证书,所有这些都在生产中设置并正常运行.
Web角色当前同时具有HTTP和HTTPS端点,但我们希望禁用HTTP端点并在生产中使用HTTPS.
如果我们删除HTTP端点,我的问题是:在Azure中处理Staging部署的HTTPS端点的最佳方法是什么?每次在Azure中执行新的分段部署时,它都会为您提供服务的新临时域名.在暂存中,我们是否应该根本不使用SSL证书,只是跳过所有浏览器警告,或者当域名随每个部署发生变化时,是否有办法在登台时使用SSL?或者当我们交换到生产时,有没有办法在Azure部署中"关闭"(HTTP)端点?
我最初的想法是创建两个具有不同端点的软件包,但是如果它们具有不同的端点配置,我不相信Azure会让您热插拔prod和staging deployments.
这可能是一个愚蠢的问题,但是有没有为用户初始化集合属性的常见做法,所以在类中使用之前,他们不必新建一个新的具体集合?
这些中的任何一个都优先于另一个吗?
选项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) 我有一个用 Java 写入标准输出的库。我想使用 log4j 在日志中捕获此输出。(这个库不是我写的,所以我无法控制库内的代码)。
是否有捷径可寻?System.setOut 是正确的方法吗?我传递给 System.setOut 的是什么?
另外,您将如何在 .NET/C# 中执行此操作?
c# ×4
.net ×2
java ×2
jms ×2
azure ×1
collections ×1
data-binding ×1
deployment ×1
distributed ×1
enums ×1
exception ×1
hibernate ×1
https ×1
idisposable ×1
linq ×1
logging ×1
messaging ×1
nested ×1
nhibernate ×1
setter ×1
ssl ×1
stdout ×1
string ×1
using ×1
wcf ×1
winforms ×1