是否有一种.NET编码方法可用于编码要在URL参数中传递的URL?
比如说我有:
url_of_interest = "http://asdf.asdf/asdf.htm"
我想在上传到网络应用程序时将其作为一(1)个URL表单参数包含在内:
http://mywebservice/upload?url=<<encoded URL here>>
我有一个包含静态对象数的类.需要经常将此类与其他将成为简单List对象的类进行"比较".
public partial class Sheet
{
public Item X{ get; set; }
public Item Y{ get; set; }
public Item Z{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这些项目显然不会是"X""Y""Z",这些只是通用名称.问题是由于需要做的事情的性质,列表不起作用; 即使这里的所有东西都是Item类型.它就像一个非常具体的事项清单,必须在代码和运行时进行测试.
这一切都很好,很好; 这不是我的问题.我的问题是迭代它.例如,我想做以下事情......
List<Item> UncheckedItems = // Repository Logic Here.
Run Code Online (Sandbox Code Playgroud)
UncheckedItems包含所有可用项目; CheckedItems是Sheet类实例.CheckedItems将包含从Unchecked移动到Checked的项目; 但是由于存储系统的性质,移动到已检查的项目无法从未选中删除.我只想迭代"已检查"并从"已检查"中的已取消选中的列表中删除任何内容.
所以很自然地,这会像普通列表一样.
foreach(Item item in Unchecked)
{
if( Checked.Contains(item) )
Unchecked.Remove( item );
}
Run Code Online (Sandbox Code Playgroud)
但由于"Sheet"不是"List",我不能这样做.所以我想实现IEnumerable以便我可以.有什么建议?我以前从来没有直接实现过IEnumerable,我很困惑从哪里开始.
经过一些反复测试后,我发现我的实现无法处理非常多的递归.虽然我在Firefox中运行了一些测试后发现这可能比我原先想象的更常见.我认为基本问题是我的实现需要3次调用来进行函数调用.第一次调用是一个名为的方法Call,它确保调用可调用对象并获取任何引用参数的值.第二次调用是在一个名为的方法Call中定义的ICallable接口.此方法创建新的执行上下文,并在尚未创建lambda表达式的情况下构建它.最后调用是函数对象封装的lambda.显然,进行函数调用非常繁重,但我确信通过一些调整,我可以在使用此实现时使递归成为可行的工具.
public static object Call(ExecutionContext context, object value, object[] args)
{
var func = Reference.GetValue(value) as ICallable;
if (func == null)
{
throw new TypeException();
}
if (args != null && args.Length > 0)
{
for (int i = 0; i < args.Length; i++)
{
args[i] = Reference.GetValue(args[i]);
}
}
var reference = value as Reference;
if (reference != null)
{
if (reference.IsProperty)
{
return func.Call(reference.Value, args);
}
else
{
return func.Call(((EnviromentRecord)reference.Value).ImplicitThisValue(), args);
} …Run Code Online (Sandbox Code Playgroud) 我在我们的项目中继承了代码,看起来像这样.这是课堂上的一种方法.
protected override bool Load()
{
DataAccess.SomeEntity record;
try
{
record = _repository.Get(t => t.ID.Equals(ID));
if (record == null)
{
throw new InvalidOperationException("failed to initialize the object.");
}
else
{
this.ID = record.ID;
// this.OtherProperty = record.SomeProperty;
// etc
}
}
catch (Exception)
{
throw;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
如果我然后从我的UI层调用这个Load方法,我可能想要一个try catch块来捕获由于加载实例失败导致的任何异常,例如InvalidOperationException,但上面的代码对我来说是错误的.
catch语句不会吞下InvalidOperationException吗?catch语句还将捕获_repository.Get的潜在问题,以及如果记录有效则设置属性的潜在问题.
我想我应该通过添加更多try catch语句来重组它来分别处理Get操作和属性设置操作,或者添加更多catch块来处理不同的异常,但我问了一位同事,他建议try catch与此无关.案件,应该完全删除,留下如下:
protected override bool Load()
{
DataAccess.SomeEntity record;
record = _repository.Get(t => t.ID.Equals(ID));
if (record == null)
{
throw new InvalidOperationException("failed to initialize the object.");
} …Run Code Online (Sandbox Code Playgroud) 我需要验证用户是否以以下格式输入文本:
####-#####-####-###
我可以使用Regex.Match吗?
我正在尝试使用$ .getScript动态加载file.js.我有几个选择选项,每次点击加载不同的脚本.我只想调用它一次,如果可能的话,在点击另一个选项时从dom中删除它,但是firebug说在下一次随后的点击中反复加载相同的脚本.尝试了几种解决方案,但发现了意想不到的结
我错过了什么,或者它应该是这样吗?我在jquery论坛上就此问题找到了一个永恒的问题:)希望在这里找到更好的运气.谢谢你的帮助.
我们升级到VS 2010,但我们还没有升级到.NET 4.0.我们所有的项目仍明确针对3.5.
今天,开发人员检查了如下所示的代码:
delegate T Generator<out T>();
Run Code Online (Sandbox Code Playgroud)
据我所知,"T"和"out T"是C#4.0的功能.根据我们的构建服务器,它没有安装.NET 4.0,我是对的.办理登机手续打破了建筑.但是,为什么它会在他的机器上构建呢?为什么VS只是忽略了项目的目标框架?
其他C#4.0功能,如动态关键字,不构建在开发人员的机器上.
我理解如何使用BitArray类,但我正在寻找一个可以将它用于真实世界程序的实例.
我有这种json字符串:
{"total":"3","data":[{"id":"4242","title":"Yeah Lets Go!","created":"1274700584","created_formated":"2010-07-24 13:19:24","path":"http:\/\/domain.com\/yeah"}{"id":"4242","title":"Yeah Lets Go!222","created":"1274700584","created_formated":"2010-07-24 13:19:24","path":"http:\/\/domain.com\/yeah222"}{"id":"4242","title":"Yeah Lets Go!333","created":"1274700584","created_formated":"2010-07-24 13:19:24","path":"http:\/\/domain.com\/yeah333"}]}
Run Code Online (Sandbox Code Playgroud)
我需要将它解析为javascript对象我相信吗?然后进入html像:
<a href="http:www..domain.com/yeah">Yeah Lets Go!</a>
<p class="date">Created: 2010-07-24 13:19:24"</p>
Run Code Online (Sandbox Code Playgroud)
但我不知道如何解析它等等.
我从中得到了这个字符串:
$('a.link').click(function() {
var item_id = $(this).attr("href").split('#')[1];
$.get(base_url+'/ajax/get_itema/'+item_id+'/0/3/true', null, function(data, status, xhr) {
$('#contentCell').html(data);
});
Run Code Online (Sandbox Code Playgroud) 我一直在慢慢研究F#带来的所有功能.一个特别引起我兴趣的是MailboxProcessor.
MailboxProcessor视为锁的替代品吗?module Tcp =
open System
open System.Collections.Generic
open System.Net
open System.Net.Sockets
open System.Threading
type SocketAsyncMessage =
| Get of AsyncReplyChannel<SocketAsyncEventArgs>
| Put of SocketAsyncEventArgs
| Dispose of AsyncReplyChannel<MailboxProcessor<SocketAsyncMessage>>
type SocketAsyncEventArgsPool(size:int) =
let agent =
lazy(MailboxProcessor.Start(
(fun inbox ->
let references = lazy(new List<SocketAsyncEventArgs>(size))
let idleReferences = lazy(new Queue<SocketAsyncEventArgs>(size))
let rec loop () =
async {
let! message = inbox.Receive()
match message with
| Get channel ->
if idleReferences.Value.Count > 0 then
channel.Reply(idleReferences.Value.Dequeue())
else …Run Code Online (Sandbox Code Playgroud) c# ×4
.net ×2
ajax ×2
api ×1
c#-4.0 ×1
concurrency ×1
ecma262 ×1
f# ×1
ienumerable ×1
javascript ×1
jquery ×1
json ×1
optimization ×1
recursion ×1
regex ×1
runtime ×1
url ×1
urlencode ×1