今天我发现了这段代码:
<object ID="FF" CLASSID="clsid:guid" CODEBASE="url" VIEWASTEXT></object>
<object ID="FileSaver" CLASSID="clsid:guid" CODEBASE="url" VIEWASTEXT></object>
…
<script language="javascript">
function FileSaver::OnFinished(Status){…}
function FF::OnFinished(Status){…}
</script>
Run Code Online (Sandbox Code Playgroud)
我找不到任何相关的解释这种语法.它真的是javascript吗?这是对的吗?如果没有,代码应该如何?
这是一个没有外部脚本链接的单页面.请注意,函数声明直接在<script>块内.
我想做这样的事情:
public static TResult MyCast<TSource, TResult>(TSource item)
{
return (TResult)item;
}
Run Code Online (Sandbox Code Playgroud)
没有TSource或TResult的限制,并尽可能避免不必要的拳击.
编辑:我想强调一下,我想要一个简单的类型转换,而不是精心设计的类型转换.如果说string,在铸造中失败是完全可以的int.
有没有理智的方法来使用CLR 2.0做到这一点?
编辑:这是一个简化版本,所以它没用,是的.但考虑转换泛型集合,例如:
public static Dictionary<string, TResult> CastValues<TSource, TResult>(this Dictionary<string, TSource> dictionary)
Run Code Online (Sandbox Code Playgroud)
在与我的同事讨论之后,似乎没有简单的方法来实现这样的功能(如果可能的话),所以我遇到了几种非常简单的方法,用于不同情况(即向上和向下)的代码膨胀引用类型和某些值类型的转换):(
太糟糕了,我无法使用.NET 4.0和它的所有dynamic优点.