小编Dat*_*han的帖子

使用反射创建通用委托

我有以下代码:

class Program
{
    static void Main(string[] args)
    {
        new Program().Run();
    }

    public void Run()
    {
        // works
        Func<IEnumerable<int>> static_delegate = new Func<IEnumerable<int>>(SomeMethod<String>);

        MethodInfo mi = this.GetType().GetMethod("SomeMethod").MakeGenericMethod(new Type[] { typeof(String) });
        // throws ArgumentException: Error binding to target method
        Func<IEnumerable<int>> reflection_delgate = (Func<IEnumerable<int>>)Delegate.CreateDelegate(typeof(Func<IEnumerable<int>>), mi);

    }

    public IEnumerable<int> SomeMethod<T>()
    {
        return new int[0];
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么我不能为我的泛型方法创建委托?我知道我可以使用mi.Invoke(this, null),但由于我想要执行SomeMethod数百万次,我希望能够创建一个委托并将其缓存为一个小优化.

.net c# generics reflection delegates

12
推荐指数
1
解决办法
3575
查看次数

将Eclipse中的"查找引用"限制为仅从我的代码中引用

我正在为100多个进口的大型软件应用程序编写插件.查找引用很有用,但有时会返回几千个结果,但通常我只对在自己的代码中查找引用感兴趣.我可以从搜索结果中轻松删除我不感兴趣的引用,但有没有办法主动限制结果?

java eclipse

12
推荐指数
1
解决办法
2169
查看次数

无法加载文件或程序集

我正在使用一个系统来使用带有NHibernate的SqlServerCe.从我的驱动程序,如果我添加System.Data.SqlServerCe程序集作为参考,我可以很好地创建和运行对数据库的查询.但是,当尝试使用NHibernate时,我得到以下异常:

mscorlib.dll中出现"System.IO.FileNotFoundException"类型的第一次机会异常附加信息:无法加载文件或程序集"System.Data.SqlServerCe"或其依赖项之一.该系统找不到指定的文件.

我已经跟踪了对Assembly.Load("System.Data.SqlServerCe")的调用的异常,这似乎应该可以工作.System.Data.SqlServerCe程序集在GAC中(我也尝试将它作为本地引用添加到CopyLocal = true,无效),我可以使用其成员很好,所以为什么我不能显式加载它?当我在Reflector中打开程序集时,它无法加载System.Transactions引用(我也尝试将它添加为本地引用,再次无效),因此加载该程序集可能是问题,而不是系统. Data.SqlServerCe程序集.

这是个常见的问题吗?可能是系统配置错误?

.net c# nhibernate

10
推荐指数
1
解决办法
3万
查看次数

在Jackson的单个文件中反序列化来自多个YAML文档的POJO

我有一个YAML文件,看起来像这样:

---
name: Sam
tags:
    -   Dev
    -   Java
----
name: Bob
tags:
    -   PM
Run Code Online (Sandbox Code Playgroud)

我想使用Jackson来反序列化文件中的所有文档,但是我没有看到使用普通文件的方法ObjectMapper.如果我使用YAMLFactory为我的文件创建一个解析器,我可以单步执行所有标记,因此解析器显然能够处理多个文档 - 但是如何将它们绑在一起? 看起来我的YAMLFactory创建的解析器只解析文件中的单个文档.

我也尝试直接创建YAMLParser并使用ObjectMapper#readValue(JsonParser, Class),但ObjectMapper耗尽了整个YAMLParser来反序列化单个实例.

java yaml jackson

9
推荐指数
1
解决办法
4743
查看次数

将装饰器模式应用于表单

我试图将装饰器设计模式应用于以下情况:

我有3种不同的形式:绿色,黄色,红色.

现在,每个表单都可以具有不同的属性集.他们可以禁用最小化框,禁用最大化框,它们可以始终位于顶部.

我尝试通过以下方式对其进行建模:

              Form <---------------------------------------FormDecorator
              /\                                                  /\
     |---------|-----------|               |----------------------|-----------------|
GreenForm  YellowForm   RedForm  MinimizeButtonDisabled MaximizedButtonDisabled AlwaysOnTop
Run Code Online (Sandbox Code Playgroud)

这是我的GreenForm代码:

public class GreenForm : Form {
    public GreenForm() {
        this.BackColor = Color.GreenYellow;
    }

    public override sealed Color BackColor {
        get { return base.BackColor; }
        set { base.BackColor = value; }
    }
}
Run Code Online (Sandbox Code Playgroud)

FormDecorator:

public abstract class FormDecorator : Form {
    private Form _decoratorForm;

    protected FormDecorator(Form decoratorForm) {
        this._decoratorForm = decoratorForm;
    }
}
Run Code Online (Sandbox Code Playgroud)

最后是NoMaximizeDecorator:

public class NoMaximizeDecorator : FormDecorator
{
    public NoMaximizeDecorator(Form decoratorForm) : …
Run Code Online (Sandbox Code Playgroud)

c# design-patterns decorator

7
推荐指数
1
解决办法
1347
查看次数

为什么在这个 Rust 代码中没有分支预测失败惩罚?

我写了这个非常简单的 Rust 函数:

fn iterate(nums: &Box<[i32]>) -> i32 {
    let mut total = 0;
    let len = nums.len();
    for i in 0..len {
        if nums[i] > 0 {
            total += nums[i];
        } else {
            total -= nums[i];
        }
    }

    total
}
Run Code Online (Sandbox Code Playgroud)

我编写了一个基本的基准测试,它使用一个有序数组和一个无序数组调用该方法:

fn criterion_benchmark(c: &mut Criterion) {
    const SIZE: i32 = 1024 * 1024;

    let mut group = c.benchmark_group("Branch Prediction");

    // setup benchmarking for an ordered array
    let mut ordered_nums: Vec<i32> = vec![];
    for i in 0..SIZE {
        ordered_nums.push(i - …
Run Code Online (Sandbox Code Playgroud)

performance compiler-optimization rust branch-prediction llvm-codegen

6
推荐指数
1
解决办法
320
查看次数

使用Json.NET进行自定义映射

我正在尝试映射看起来像的JSON

"ids": {
    "id": {
        "@value":"6763754764235874140"
    }
}
Run Code Online (Sandbox Code Playgroud)

我想把它映射到几个看起来像的类

class Property
{
    public Ids Ids { get; set; }
}

class Ids
{
    public string Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

所以基本上我想把ids/id/@valueJSON文档的值填充到Ids.Id类体系结构中.从浏览文档,我想我可以使用类似的东西

[JsonProperty(ItemConverterType=typeof(IdConverter))]
public string Id { get; set; }
Run Code Online (Sandbox Code Playgroud)

并提供一个JsonConverter名为的自定义子类IdConverter.但是,当我这样做时,我IdConverter.ReadJson永远不会被召唤.我究竟做错了什么?

c# serialization json json.net

5
推荐指数
1
解决办法
9021
查看次数