在将 web 应用程序从 IIS/asp.net 移植到 HttpListener 时,我觉得有些奇怪。
虽然两者都有上下文、请求和响应的概念,但 HttpListener 变体与 IIS/asp.net 变体没有共享通用接口,尽管接口几乎相同。
为了解决这个问题,我创建了自己的通用接口(IContext、IRequest 和 IResponse),并使用这些接口的实现包装了相应的服务器生成的对象,这样我就不需要处理程序代码的两个单独实现正在搬运。
这导致了包装器的类爆炸(总共 10 个),只是为了围绕这个缺少的通用接口进行编码。
我是否错过了一个技巧,或者这只是 .net API 的一个缺点?
一个相当全面的大脑查询已经发现了一千零一种传递可变长度参数列表的方法,这些参数列表涉及以下方法:
我们的要求是将两个可变长度的整数列表(〜最多20个整数)传递给存储过程.上面列出的所有方法似乎都很有趣.
这只是它必须要做的方式,还是有更好的方法?
编辑: 我刚刚发现了这个,这可能使这个问题成为一个骗局
我们都知道Android运行Dalvik VM程序.
通常,开发人员用Java编写程序,然后将其编译为Dalvik字节码.
我想知道是否有可能创建一个可以接受C#代码并将其编译成Dalvik字节码的编译器.
考虑以下文件
<html>
<body>
This is some content
<script type="text/javascript" src="verySlowToRespond.js"></script>
This is some more content
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我想首先检查我的假设,即script在脚本加载和执行之前,浏览器解析标签之外是不安全的。
这意味着(如果我的假设是正确的),比如说verySlowToRespond.js需要 20 秒来响应,在解决此依赖关系之前无法完全组装页面 DOM。
假设verySlowToRespond.js无限期地挂起?浏览器在什么时候会放弃并继续解析?
我想知道如何在多个面板中使用自定义对象.
我创建了一个panelModified对象(从Panel扩展)并希望将它放在两个普通面板中,因此当对象更改其状态时,两个面板都会显示更新的信息.
在我的情况下,"panelModified"是一个面板,其中包含一些按钮和嵌入的视频.
这是代码:
panelPreview = new PanelPreview(file); (panelModified object)
panel1.Controls.Add(panelPreview);
panel2.Controls.Add(panelPreview);
Run Code Online (Sandbox Code Playgroud)
它只显示在panel2 :(
我在制作一些稍微不那么微不足道的东西时撞毁了LinqPad.我不想重新启动它,直到我确定不会危及恢复我的工作(如果可能的话).我的问题是:LinqPad是否写了临时文件,可能仍然包含我编写的代码?
对于后人来说,这是一个每次都崩溃LinqPad的测试案例(也发布到LinqPad论坛):
void Main()
{
Crasher.Crash();
}
class Crasher
{
public static void Crash()
{
var a=0;
Crash();
a++; //let's get something in the tail so compiler
//doesn't optimise tail recursion and prevent
//stackoverflow
}
}
Run Code Online (Sandbox Code Playgroud) 我使用异步CTP进行第一次播放约15分钟......(很好).
这是一个非常简单的服务器,我已经敲了一下:
internal class Server
{
private HttpListener listener;
public Server()
{
listener = new HttpListener();
listener.Prefixes.Add("http://*:80/asynctest/");
listener.Start();
Go();
}
async void Go()
{
HttpListenerContext context = await listener.GetContextAsync();
Go();
using (var httpListenerResponse = context.Response)
using (var outputStream = httpListenerResponse.OutputStream)
using (var sw = new StreamWriter(outputStream))
{
await sw.WriteAsync("hello world");
}
}
}
Run Code Online (Sandbox Code Playgroud)
可以看出,异步方法Go调用自身.在经典的非异步世界中,这会导致堆栈溢出.我认为这不是异步方法的情况,但我想确定,不管怎样.任何人?
我是Ninject的新手(和DI一般).
我理解内核如何加载模块,到目前为止我编写的代码往往只有一行:
myKernel.Get<MyApp>()
Run Code Online (Sandbox Code Playgroud)
它从我的模块中的绑定构造我需要的一切.如果在初始化之后需要新实例,那么这些由我绑定初始化的工厂负责.到目前为止,工厂已经没有任何ninject依赖项,只需按需创建对象.
现在我已经达到了一个点,我需要考虑初始化后的对象创建,我自己的工厂模式不再削减它.这将是为(远程)客户端支持pub/sub接口.对于我的服务器的每个新连接,我想IClient根据ninject模块中定义的一组绑定创建新实例.这是否意味着我在初始化时传入的工厂必须有自己的内核(或者对主内核的引用)?CommonServiceLocator的功能在哪里.CSL是否必要?
在我走得太远之前,我认为最好在这里询问其他人如何处理这个问题.
我有以下XML文件,我想知道阅读此XML文件的最佳方法
<MyFile>
<Companies>
<Company>123</Company>
<Company>456</Company>
<Company>789</Company>
</Companies>
</MyFile>
Run Code Online (Sandbox Code Playgroud)
作为输出我需要收集像"123,456,789"这样的值,或者它可能是字符串[]的数组
我们可以将Linq用于xml吗?怎么样?
c# ×5
javascript ×2
.net ×1
ajax ×1
android ×1
architecture ×1
async-ctp ×1
crash ×1
dom ×1
http ×1
iis ×1
linq ×1
linq-to-xml ×1
linqpad ×1
markdown ×1
ninject ×1
ninject-2 ×1
parameters ×1
recursion ×1
sql ×1
sql-server ×1
winforms ×1
xml ×1