使用Serializable属性和实现ISerializable接口有什么区别?
有关于螺纹安全的问题ConcurrentDictionary.从API,我看到枚举器是线程安全的,但我没有看到键和值属性相同.我的问题是:
当有其他线程同时修改它时,循环遍历Keys或Values集合是否安全?
如何将a转换Dictionary<string, string>为NameValueCollection?
我们项目的现有功能返回了一个老式的NameValueCollection,我用LINQ修改.结果应该作为一个传递NameValueCollection.
我想以通用的方式解决这个问题.任何提示?
我正在尝试将a Select和项目中的每个元素投射到一个Dictionary<string, UdpReceiveResult>
我当前有一个Select只是将a的值投影到类型Dictionary列表.是一本类型的字典.我有tasksUdpReceiveResultclientsDictionary<string, UdpClient>
var tasks = clients.Select(c => c.Value.ReceiveAsync()).OrderByCompletion();
Run Code Online (Sandbox Code Playgroud)
我想将密钥和ReceiveAsync()结果投影到一个新的Dictionary.该OrderByCompletion是Nito.AsyncEx DLL.
我有以下代码:
public interface IProductDataAccess
{
bool CreateProduct(Product newProduct);
}
Run Code Online (Sandbox Code Playgroud)
类ProductDataAccess实现了该接口.
public class ProductBusiness
{
public bool CreateProduct(Product newProduct)
{
IProductDataAccess pda = new ProductDataAccess();
bool result = pda.CreateProduct(newProduct);
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如何CreateProduct通过模拟IProductDataAccess接口来创建方法的单元测试?我想到了一个IProductDataAccess内部的公共实例ProductBusiness并使用Mock<IProductDataAccess>object 初始化它,但是将数据访问暴露给UI层并不是一个好习惯.谁能帮我?
在MSDN上的一篇文章中,它声明double数据类型的范围是"-1.79769313486232e308 .. 1.79769313486232e308".而long数据类型仅具有"-9,223,372,036,854,775,808 ... 9,223,372,036,854,775,807"的范围.如果它们都是64位大小,double那么如何保存这么多的数据long呢?
http://msdn.microsoft.com/en-us/library/cs7y5x0x(v=vs.90).aspx
我目前正在使用Moq框架编写单元测试和模拟依赖项.在这样做的过程中,我创建了一个Mock,如下所示:
Mock<ITraceProvider> traceProviderMock = new Mock<ITraceProvider>();
traceProviderMock.Setup(x => x.GetTraceContext(It.IsAny<string>())).Returns("test");
ITraceProvider traceObj = traceProviderMock.Object;
Run Code Online (Sandbox Code Playgroud)
但是后来我想稍微修改模拟的行为,所以我Setup再次调用Mock对象:
traceProviderMock.Setup(x => x.GetTracer(It.IsAny<string>())).Returns("tracer");
Run Code Online (Sandbox Code Playgroud)
现在没有traceProviderMock.Object再次调用,这个新的模拟行为会反映出来traceObj吗?这就是我想要的情况.
这肯定适用于该Verify()方法,但似乎不适用于该Setup方法.
我想这样做的原因是因为我使用模拟依赖项在Test Setup方法中构建了一个完整的依赖图.我只想更改我的特定测试的一个模拟依赖项的行为.后续测试也会将自己的特化应用于模拟的依赖项.
我有一个NameValueCollection初始化的usercontrol,如下所示:
private NameValueCollection _nameValues = HttpUtility.ParseQueryString(Request.QueryString.ToString());
Run Code Online (Sandbox Code Playgroud)
当我调用ToString()它时,它会生成一个正确的查询字符串,我可以将其用于更新的URL.
但是,当我NameValueCollection像这样复制via它的构造函数时:
var nameValues = new NameValueCollection(_nameValues);
Run Code Online (Sandbox Code Playgroud)
然后尝试形成一个网址:
var newUrl = String.Concat(_rootPath + "?" + nameValues.ToString());
Run Code Online (Sandbox Code Playgroud)
它会输出一个这样的网址:
" http://www.domain.com?System.Collections.Specialized.NameValueCollection "
如何复制a NameValueCollection以使ToString()方法输出所需的结果?
我有三个类CircleBuilder,SquareBuilder并TriangleBuilder实现了ShapeBuilder接口.
我需要使用google-guice 初始化我的FormBuilder并且特别是BuilderList(扩展List<ShapeBuilder>)每个类的一个实例.
什么是最好的方法?
我知道提供者方法和这样的东西:
@Provides
FormBuilder provideFormBuilder() {
DatabaseTransactionLog instance = new FormBuilder ( <numerous parameters> );
ShapeBuilder builder = null ;
builder = new CircleBuilder( <numerous parameters> ) ;
instance.addBuilder( builder ) ;
builder = new SquareBuilder( <numerous parameters> ) ;
instance.addBuilder( builder ) ;
// And so on
return instance;
}
Run Code Online (Sandbox Code Playgroud)
但这意味着我必须创建我的FormBuilder手动操作,这违背了使用guice的目的(因为它FormBuilder是我的对象图中的顶部元素).
我希望能够写出这样的东西:
bind(BuilderList.class).to(CircleBuilder.class);
bind(BuilderList.class).to(TriangleBuilder.class);
bind(BuilderList.class).to(SquareBuilder.class);
Run Code Online (Sandbox Code Playgroud)
任何的想法?
我需要将检查过的复选框代码传递给JavaScript中的C#.我能够通过JSON发送代码.我的JSON值是JArray.我在标题中得到了例外.
JSON:
{
"Items": [
"100066",
"100067"
]
}
Run Code Online (Sandbox Code Playgroud)
C#:
public ActionResult UpdateTransportRequests()
{
string json;
using (var reader = new StreamReader(Request.InputStream))
{
json = reader.ReadToEnd();
}
JObject jo = (JObject)JsonConvert.DeserializeObject(json);
string lineItems = jo.Value<string>("Items");
RequestDataAccess rda = new RequestDataAccess();
decimal reqId = decimal.Parse(lineItems);
rda.ApproveReject_Request(reqId, "A", "");
return Json(new { result = "success" });
}
Run Code Online (Sandbox Code Playgroud)
客户端:
function approveAll(requestid) {
var items = [];
$('#grid tbody').find('input:checkbox:checked').each(function (index, item) {
var rowIndex = $(this).closest('tr').index();
items.push($('#grid tbody').find('tr:eq(' + rowIndex + ')').find('td:eq(1)').text().replace('TR-', ''));
}); …Run Code Online (Sandbox Code Playgroud)