解释我的意思的最简单方法是使用代码示例.这不能编译,但有没有办法实现这个效果:
foreach(Type someType in listOfTypes)
{
SomeMethod<someType>();
}
Run Code Online (Sandbox Code Playgroud)
如果可行的话会非常方便,但事实并非如此.是否有其他方法可以实现与上述相同的事情,为什么C#不允许这是一个法律声明?
编辑:似乎唯一的方法是通过反射,这可能对我们的需求来说太慢了.任何洞察为什么没有内置的有效方法以及这样的事情是否适用于C#4.0?
基本上我需要的是一种自动更新WiX产品版本号(带Votive等的3.0)的方法,然后将该版本号放入Inno Setup"bootstrapper"中
我的流程几乎都是自动化的,但版本号仍然需要手动更新,这显然不太理想,但我找不到如何在编译时将值传递给Inno Setup(以及如何引用它们),在WiX项目中,我需要知道如何在Visual Studio 2008中的同一解决方案中引用不同项目的版本号
基本上我做了一个控制台应用程序,执行一些需要几分钟的任务.我想让它在任务栏中闪现,让我知道它什么时候做完了.
客户端使用GenuineChannels连接到服务器(我们正在考虑切换到DotNetRemoting).我的意思是找到要连接的服务器的IP和端口号.
看起来像蛮力的方法是尝试网络上的每个IP尝试活动端口(甚至不确定是否可能)但必须有更好的方法.
我尝试过两种方法都可以工作,但感觉都不干净.
第一个是使用一些内联javascript接受视图模板中的变量,如:
var x = {{ myServersideVariable }};
Run Code Online (Sandbox Code Playgroud)
(在我的情况下,我使用的是Jinja2,但同样的东西适用于Django模板,.NET MVC3中的Razor,PHP中的Twig或任意数量的视图模板引擎).
显然,关于这一点的不洁部分是html页面中的javascript而不是单独的文件.
我使用的另一个选项是在一个隐藏的字段填充服务器端,然后在Javascript端使用.这感觉稍微干净,但不完全,写起来也有点麻烦.
有没有更好的解决方案,还是那些我唯一的选择?
PS
我知道JSON,事实上我有时不得不求助于第一个解决方案,如果我需要传递原语以外的东西.因此,支持传递JSON对象而不在页面上使用javascript的解决方案的奖励积分.
我的理解是,如果你发送一个带有理智名称,主机和路径的cookie,它将被浏览器解释为替代品.
这似乎是Chrome中的情况,但在Firefox(7.01)中,我会获得除内容之外完全相同的多个Cookie.

除"内容"部分外,所有3个SqlAuthCookie条目都相同.
这是Firefox中的错误还是我对Cookie如何工作有一个根本的误解?
我们需要模拟不稳定的网络连接以尝试调试我们的服务器/客户端应用程序中的一些连接问题,我想知道是否有任何程序可以模拟这些条件,例如在微弱的无线网络上.
我不只是指降低带宽,还降低可靠性,频繁开关,短时断线连接等.
我们有这种常见的场景,我们有一个方法可以异步执行某些操作,并在完成时引发一个事件.
有时我们希望它同步完成,所以我们有类似于这样的代码:
ManualResetEvent reset = new ManualResetEvent(false);
someobject.AsyncActionDone += (sender, args) => reset.Set();
someobject.PerformAsyncAction();
reset.WaitOne();
Run Code Online (Sandbox Code Playgroud)
有没有办法编写辅助方法来做到这一点?我可以传递Action来执行,但是我不确定如何传递让helper方法知道要侦听哪个事件的东西,因为它看起来不像你可以将EventHandler作为参数传递.
优选地,不需要反射的解决方案
似乎有一些混乱,这是someobject的类是什么样的样本:
public class SomeClass
{
private ExternalServer someServerOverTheNetwork = new ExternalServer();
public event EventHandler AsyncActionDone;
public Data SomeData { get; set; }
public void PerformAsyncAction()
{
someServerOverTheNetwork.GetSomeData(OnDataRetrived);
}
public Data OnDataRetrived(Data someData)
{
AsyncActionDone(this, new DataEventArgs(someData));
}
}
Run Code Online (Sandbox Code Playgroud) 从Knockout v2.1.0调试源代码:
ko.observable['fn'] = {
"equalityComparer": function valuesArePrimitiveAndEqual(a, b) {
var oldValueIsPrimitive = (a === null) || (typeof(a) in primitiveTypes);
return oldValueIsPrimitive ? (a === b) : false;
}
};
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎不直观,但必须有一些理由让史蒂夫桑德森不顾一切地定义这个.为什么会这样呢?它似乎不必要地触发更改通知.
我没有看到任何东西,我怀疑定义"n"有困难,因为一般来说,分析复杂函数时,不仅仅有一两个变量用于定义.
有关于圈复杂度的分析工具,但有时间(和/或空间)复杂性吗?如果是这样的话,如果没有,为什么不呢?这是不可行的吗?不可能?有人只是没有接触到它?
理想情况下,应用程序的整体复杂性(定义不同的可能"n")以及应用程序中的每个方法都有类似的东西
编辑:所以看起来像一个确切的解决方案是不可能的,因为停止问题然而,某种启发式近似可能吗?我意识到,出于实际目的,一个好的分析器将提供更多有用的信息,但它似乎是一个有趣的问题.
另外,如何计算某个程序子集?
c# ×4
asynchronous ×1
big-o ×1
coding-style ×1
cookies ×1
firefox ×1
generics ×1
inno-setup ×1
javascript ×1
knockout.js ×1
remoting ×1
server-side ×1
simulation ×1
taskbar ×1
types ×1
wix ×1