我想编写如下函数
// The type 'MethodGroup' below doesn't exist. This is fantasy-code.
public void MyFunction(MethodGroup g)
{
// do something with the method group
}
Run Code Online (Sandbox Code Playgroud)
后来,我可以打电话MyFunction用任何方法组.像这样的东西.
MyFunction(Object.Equals)
Run Code Online (Sandbox Code Playgroud)
如果我承诺签名,那么事情就可以了.
public void MyFunction(Func<object, object, bool> f)
{
// do something with known delegate
}
...
MyFunction(Object.Equals)
Run Code Online (Sandbox Code Playgroud)
方法组Object.Equals很高兴被强制转换为已知的委托类型Func<object, object, bool>,但我不想提交特定的签名.我想通过任何方法组MyFunction.
方法组无法转换为 System.Object
public void MyFunction(object o)
{
// do something with o
}
...
MyFunction(Object.Equals) // doesn't work
Run Code Online (Sandbox Code Playgroud)
我认为每个人都忘记了方法调用的大括号,并在某些时候发现了这一点.我希望这并不意味着方法组不会(或不能转换)为第一类对象.
我不认为Linq的表达会给出我正在寻找的那种普遍性,但我当然可能会遗漏一些东西.
我还应该提一下,如果方法组包含重载,那将是没问题的,前提是我有一种检查方法组的方法.
我怎么处理方法组? 我可以打印组中所有方法的所有签名(重载,扩展方法等),或者我可以用一些参数"调用"该组(如果可能的话,让它解析为组中的正确重载).还有其他方法可以执行这些操作,但它们是您可能希望使用方法组执行的一些操作.
正如几个人所提到的,我可以接受一个 …
当鼠标移动到我的WPF应用程序上时,我遇到了泄漏非托管内存的情况.具体来说,当我在应用程序perfmon或Red Gate的内存分析器中分析应用程序时,私有字节单调增加,但所有托管堆中的字节保持不变 - 我相信,这意味着应用程序具有非托管泄漏.
我创建了一个简单的repro应用程序,但我看不出问题出在哪里.
该应用程序包含一个包含四个项目的ListView.在这些项目上快速移动鼠标会导致问题.
如果你有兴趣重现这个问题,这就是代码 - 它不是很漂亮,但它很简单.
谢谢
编辑:我已为此问题创建了Microsoft Connect问题.
App.xaml中
<Application x:Class="WpfLeakRepro.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="Window1.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Generic.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
Run Code Online (Sandbox Code Playgroud)
App.xaml.cs
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Windows;
namespace WpfLeakRepro
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
}
}
Run Code Online (Sandbox Code Playgroud)
Generic.xaml
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<LinearGradientBrush x:Key="ListItemHover"
EndPoint="0,1"
StartPoint="0,0">
<GradientStop Color="Aqua"
Offset="0" />
<GradientStop …Run Code Online (Sandbox Code Playgroud) 我有一个没有静态构造函数的静态类,但是有许多静态成员.首次使用该类时,我抛出一个TypeInitializationException.
我打破了CLR异常,我禁用了"Just My Code".
问题是我只在第一次使用这个类时得到这个异常; 我不打破失败的静态字段初始化程序.我当然可以删除静态成员,直到找到罪魁祸首,但有更简单的方法吗?
有没有人有任何调试静态字段初始化的技巧?