我想为List
接受对象的类编写扩展方法,并将其添加到前面而不是后面.扩展方法真让我迷惑.有人可以帮我解决这个问题吗?
myList.AddToFront(T object);
Run Code Online (Sandbox Code Playgroud) 我正在进行测试.
看起来像:
方法1)
List<int> = new List<int>{1,2,4, .....} //assume 1000k
var result ErrorCodes.Where(x => ReturnedErrorCodes.Contains(x)).First();
Run Code Online (Sandbox Code Playgroud)
方法2)
List<int> = new List<int>{1,2,4, .....} //assume 1000k
var result = ErrorCodes.Where(x => ReturnedErrorCodes.Contains(x)).ToArray()[0];
Run Code Online (Sandbox Code Playgroud)
为什么方法2与方法1相比是如此之慢?
如果应该使用DataTrigger,是否可以使用通配符或调用方法来计算?
我目前将我的DataList绑定到包含文件名的IEnumerable,如果文件扩展名以"old"开头,我希望文件名显示为灰色
我的非工作梦想xaml标记看起来像这样:
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding}" Value="*.old*">
<Setter TargetName="FileName" Property="Foreground" Value="Gray"/>
</DataTrigger>
</DataTemplate.Triggers>
Run Code Online (Sandbox Code Playgroud)
我能够提出的唯一可行解决方案是插入包含此逻辑的新视图模型属性,但我想避免在可能的情况下更改视图模型.
如何在内部实施扩展方法?我的意思是当编译器看到扩展方法的声明时以及在调用扩展方法时在运行时发生的情况会发生什么.
是否涉及反思?或者当你有一个扩展方法时,它的代码注入到目标类类型元数据中,并带有一些额外的标志,注意这是一个扩展方法,然后CLR知道如何处理它?
所以一般来说,引擎盖下会发生什么?
该文章陈述如下:http://msdn.microsoft.com/en-us/library/dd799517.aspx
差异不适用于代表组合.也就是说,给定两个类型的委托Action<Derived>
和Action<Base>
(Action(Of Derived)
和Action(Of Base)
在Visual Basic中),您不能将第二个委托与第一个委托合并,尽管结果是类型安全的.Variance允许将第二个委托分配给类型变量Action<Derived>
,但委托只有在其类型完全匹配时才能组合.
Action<B> baction = (taret) => { Console.WriteLine(taret.GetType().Name); };
Action<D> daction = baction;
Action<D> caction = baction + daction;
Run Code Online (Sandbox Code Playgroud)
在上面的代码baction
和daction
采取不同的参数.但我仍然可以将它们结合起来.我错过了什么?
TIA.
我想通过点击按钮打印报告.我只是不需要(事实上,我不想)在打印前查看报告.只需传递一些参数并将其发送到打印机(如果有或没有打印对话框,则无关紧要).
我正在使用Html Agility Pack并且我一直收到此错误."远程服务器返回错误:(500)内部服务器错误." 在某些页面上.
现在我不确定这是什么,因为我可以使用Firefox来访问这些页面而没有任何问题.
我有一种感觉,网站本身就是阻止而不是发送回复.有没有办法让我的HTML敏捷包调用更像是从FireFox调用的调用?
我已经在那里设置了一个计时器,所以它每20秒只发送一次网站.
我还可以使用其他任何方法吗?
我有一个列表框,使用GroupStyle对项目进行分组.我想在stackpanel的底部添加一个控件来保存所有组.此附加控件需要是滚动内容的一部分,以便用户滚动到列表的底部以查看控件.如果我使用的是没有组的列表框,则通过修改ListBox模板可以轻松完成此任务.但是,对于分组的项目,ListBox模板似乎仅适用于每个组.我可以修改GroupStyle.Panel,但这不允许我向该面板添加项目.
<ListBox>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.GroupStyle>
<GroupStyle>
<GroupStyle.Panel>
<ItemsPanelTemplate>
<VirtualizingStackPanel/> **<----- I would like to add a control to this stackpanel**
</ItemsPanelTemplate>
</GroupStyle.Panel>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Grid>
<ItemsPresenter />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListBox.GroupStyle>
Run Code Online (Sandbox Code Playgroud)
这应该让我知道我需要做什么:
void Foo()
{
var xMaybeNull = GetX();
if (xMabyeNull == null) return; // Some way to get rid of this extra
// sentence without loosing the check
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
简单的方法是这样,但编译器需要一个表达式.
void Foo()
{
List<Disc[,]> xNeverNull = GetX() ?? return;
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
问题是,有没有办法写出someSortOfReturnExpression
(我猜不是)或另一种解决方案,可以在一条线上做我正在寻找的东西?
void Foo()
{
List<Disc[,]> xNeverNull = GetX() ?? someSortOfReturnExpression;
// do stuff
}
Run Code Online (Sandbox Code Playgroud) 我有一个奇怪的问题。我正在尝试检索已在webbrowser控件中加载的图像。以下代码在WinForms应用程序中可以正常运行:
IHTMLControlRange imgRange = (IHTMLControlRange)((HTMLBody)__ie.NativeDocument.BODY).createControlRange();
foreach (IHTMLImgElement img in __ie.NativeDocument.Images)
{
imgRange.add((IHTMLControlElement)img);
imgRange.execCommand("Copy", false, null);
System.IO.MemoryStream stream = new System.IO.MemoryStream();
using (Bitmap bmp = (Bitmap)Clipboard.GetDataObject().GetData(DataFormats.Bitmap))
{
bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
var image = System.Drawing.Image.FromStream(stream);
}
}
Run Code Online (Sandbox Code Playgroud)
但是如果我在WPF应用程序中使用相同的代码,则会在
using (Bitmap bmp = (Bitmap)Clipboard.GetDataObject().......
Run Code Online (Sandbox Code Playgroud)
错误如下:
“无法将类型为'System.Windows.Interop.InteropBitmap'的对象转换为类型为'System.Drawing.Bitmap'。”
我该如何解决?
请任何人都可以提供任何指导。
先感谢您。
c# ×9
wpf ×3
.net ×2
.net-4.0 ×1
asp.net ×1
browser ×1
clr ×1
datatrigger ×1
groupstyle ×1
linq ×1
list ×1
listbox ×1
web-scraping ×1
winforms ×1
xaml ×1