在某些2008 R2环境中而不是其他环境中,我正在COMExceptions使用System.Windows.Forms.WebBrowser控件.无论是通过DocumentText属性指定内容还是Navigate使用URL参数调用方法,我都会得到相同的异常:
COMException - 错误HRESULT E_FAIL已从对COM组件的调用返回.
在 System.Windows.Forms.UnsafeNativeMethods.IWebBrowser2.Refresh()
我发现在指定之前设置ScrollBarsEnabled属性会导致此异常,并且这似乎是在浏览器没有内容时调用方法(上面引用)的结果(此处的最后一篇文章).解决方法是设置一些模拟内容并调用.但即使有了这个,它也会在稍后加载内容时导致上述异常(在另一个线程中完成).WebBrowserDocumentTextRefreshApplication.DoEvents()
请注意,DocumentCompleted我指定的委托正在被命中,但它WebBrowser.axIWebBrowser2.StatusText显示已发生异常,并且WebBrowser.Document为空.
我可以提出一个简单的应用来重现这个问题,但我必须找到一个2008 R2实例,其中错误可以重现以便调试.我更想问是否有人对可能影响或导致问题的想法有所了解,可能与COM安全等有关.
请注意,我执行WebBrowser的STA Apartment状态.
任何想法或建议将不胜感激.提前致谢! - 最大
我想知道在定义泛型类时是否有"class"和"new()"约束是否合理.如下例所示:
class MyParanoidClass<T> where T : class, new()
{
//content
}
Run Code Online (Sandbox Code Playgroud)
两个约束都指定T应该是引用类型.虽然"类"约束并不意味着隐式构造函数存在,但"new()"约束确实需要带有附加公共构造函数定义的"类".
我的最后一个问题是:我在上面的语句中定义泛型类是否有任何好处,或者"new()"是否封装了两个约束?
我使用JQuery布局并仅定义北,西和中间窗格.在左侧(西部窗格)我正在构建一个CSS弹出菜单.随着网络上大量的CSS弹出菜单,我可以毫不费力地使用它.我面临的问题是弹出菜单与中心窗格不重叠.您可以在我的JSfiddle示例中看到此行为.我试过设置,overflow: visible; z-index: 10001;但没有解决任何问题.我接下来可以尝试什么?
我有一个用可折叠的div制作的流畅布局.当它们坍塌时,它们会在下面留下一个空的空间,它会被下一个div(它们都有float: left)自动填充.然而,这看起来不太好,我想保持"行结构"而不会失去移动div的能力(当窗口变小时).JSFiddle在这里.

CSS片段:
.clickable {
border: 1px dotted black;
width: 200px;
float: left;
height:50px;
margin-right:20px;
margin-bottom:20px;
}
Run Code Online (Sandbox Code Playgroud)
HTML片段:
<html>
<head><title>Layout test</title></head>
<body>
<div class="clickable"> 1 </div>
<div class="clickable"> 2 </div>
<div class="clickable"> 3 </div>
<div class="clickable"> 4 </div>
<div class="clickable"> 5 </div>
<div class="clickable"> 6 </div>
</body>
<html>
Run Code Online (Sandbox Code Playgroud)
有纯CSS解决方案吗?我不想乱用JavaScript.我知道我可以动态确定列数,然后将它们包装成"行",但我还不愿意使用这个解决方案.
我有一个基类,需要处理派生类的属性名称(显式访问).为此,我创建了一个将lambda表达式作为输入的方法:
private string GetMemberName(Expression<Func<object>> expression)
{
//gets the property name (MemberExpression or UnaryExpression)
//out of scope
return propertyName;
}
Run Code Online (Sandbox Code Playgroud)
这允许我像这样调用方法:
derived.GetMemberName(() => derived.MyPropertyInt);
derived.GetMemberName(() => derived.MyPropertyStr);
Run Code Online (Sandbox Code Playgroud)
问题是object根本不是限制性的.我也可以打电话:
derived.GetMemberName(() => "something"); //does not "return" anything but compiles (out of scope)
derived.GetMemberName(() => anotherClass.RandomMember); //not derived from "base"
Run Code Online (Sandbox Code Playgroud)
我如何限制GetMemberName方法,以便它只能接受从我的基类派生的类的成员作为输入?设置GetMemberName(Expression<Func<MyBaseClass>> expression)限制对整个班级的访问.设置GetMemberName(Expression<Func<MyBaseClass, object>> expression)限制对当前实例的访问,但仍允许传递"随机"对象.
编辑:注释derived.GetMemberName(() => "something");是在返回属性名称的上下文中,而不是lambda表达式的"值".该GetPropertyName方法不会返回任何内容,因为我只是在分析MemberExpression或UnaryExpression.
我有一个带有联合返回类型的(比较)函数。它可以返回-1,1或0. 但是,当至少一个要比较的项目未定义时,我需要一种特殊情况(“结果”)。编译器允许我添加null作为潜在的返回值,但不允许NaN(这在某些情况下是有意义的,例如比较数字或日期)。
这编译
function myFunc(item1: MyType, item2: MyType): -1 | 0 | 1 | null {
...
}
Run Code Online (Sandbox Code Playgroud)
但对于这个,编译器说“找不到名称 NaN”:
function myFunc(item1: MyType, item2: MyType): -1 | 0 | 1 | NaN {
...
}
Run Code Online (Sandbox Code Playgroud)
为什么NaN不允许?有办法使用吗NaN?
我需要一个泛型类型,当(此属性的)泛型参数为 时,该泛型类型可以从指定类型中排除泛型属性never。为了实现这一点,我使用了Omit和 条件类型。例如,当泛型参数设置为 时,number它的行为会按预期进行,但当泛型类型设置为 时never,类型会解析为never而不是排除指定的属性 ( Playground ):
type BaseType<T> = {
prop1: string;
genProp1: T;
};
type Excluded<T> = T extends never ? Omit<BaseType<T>, "genProp1"> : BaseType<T>;
const obj1: Excluded<number> = {
genProp1: 5,
prop1: "something, something"
};
//obj2 is never
const obj2: Excluded<never> = {
prop1: "dark side" //error: Type 'string' is not assignable to type 'never'
};
Run Code Online (Sandbox Code Playgroud)
为什么要这样做以及如何让它返回正确的类型 ( { prop1: string })?
编辑:比较而null …
我正在试图找出if语句的一些最佳实践.当我需要打开一些相等性,即需要一个if-else结构时,我通常会在"不等于"上写条件.这背后的原因通常是,当一个非成功的结果出现时,指令的数量和它们的复杂性都很低.比较过程有什么不同吗?在等于(==)和不等于(!=)之间的执行时间是否存在差异?
示例(一个相当简单的例子,但总体思路成立):
string myString = "weekend";
if(myString != "weekend")
{
Console.WriteLine("No fun...!");
}
else
{
//do a bunch of fun stuff with relatively high complexity
//can expand over many lines of code
}
Run Code Online (Sandbox Code Playgroud)
如果我改变if-else语句的顺序,执行时间有什么不同吗?
string myString = "weekend";
if(myString == "weekend")
{
//do a bunch of fun stuff with relatively high complexity
//can expand over many lines of code
}
else
{
Console.WriteLine("No fun...!");
}
Run Code Online (Sandbox Code Playgroud) 我有一个类型为 的成员Record<number, MyType>。目前,我还可以为其分配一个数组。我明白了:数组是一个对象(typeof [] => 'object'),索引是键。但是,是否可以告诉编译器我不想允许将数组传递给我的类型变量Record<int, WhateverType>?
const myRecord: Record<number, MyType> = []; // <= would like to have an error here
Run Code Online (Sandbox Code Playgroud) 基本上,在我的控制器中,我重定向到 Index 操作:
return RedirectToAction("", new { id = id });
Run Code Online (Sandbox Code Playgroud)
除了 URL 栏显示controllername/index/id. 我希望能够避免在 URL 中显示“索引”。这可能吗?如果是这样,如何?
我想编写一个泛型函数,它将泛型类型的属性名称作为参数。我需要让 TypeScript 断言该属性的值属于特定类型。考虑以下简化代码:
interface MyObject {
myProp: number;
mySecondProp: string;
myOtherProp: string;
myFlagProp: boolean;
}
const doStuff<T> = (obj: T, propName: SomeType) => { /***/ }
Run Code Online (Sandbox Code Playgroud)
我可以提取特定类型(例如)的所有属性string,但编译器将无法确切知道该属性的类型:
type StringProps<T> = {
[K in keyof T]: T[K] extends string ? K : never }[keyof T]
}
const doStuff<T> = (obj: T, propName: StringProps<T>) => {
obj[propName].indexOf("a"); // Property 'indexOf' does not exist on type 'T[{ [K in keyof T]: T[K] extends string ? K : never; }[keyof T]]'
} …Run Code Online (Sandbox Code Playgroud) c# ×5
typescript ×4
generics ×3
css ×2
arrays ×1
asp.net ×1
com ×1
comexception ×1
constraints ×1
hresult ×1
html ×1
if-statement ×1
lambda ×1
optimization ×1
popup ×1
record ×1