小编mnn*_*mnn的帖子

MEF 2无法导入通用接口的通用实现

我正在使用Codeplex主页上的最新MEF 2预览版,它应该添加开放式泛型支持.确实如此,但在这种特定情况下,MEF无法组成通用接口的通用实现:

public interface IOuter
{
    IInner Value { get; }
}

[Export(typeof(IOuter))]
public class MyOuter : IOuter
{
    [ImportingConstructor]
    public MyOuter(InnerGenericClass<string, int> value)
    {
        this.Value = value;
    }

    public IInner Value { get; private set; }
}

public interface IInner
{
    void Say();
}
public interface IGenericInner<T, K> : IInner
{
    // something else here
}

[Export(typeof(IGenericInner<,>))]
public class InnerGenericClass<T, K> : IGenericInner<T, K>
{
    public void Say()
    {
        Console.WriteLine("{0}, {1}", typeof(T), typeof(K));
    }
}

class Startup …
Run Code Online (Sandbox Code Playgroud)

c# generics mef .net-4.0

2
推荐指数
1
解决办法
2784
查看次数

无法使用关联索引对表进行排序

为什么我不能使用table.sort对具有关联索引的表进行排序?

sorting indexing lua associative-array lua-table

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

将位图保存为32bpp不会保持透明度

using (var bmp = new Bitmap(image.Width, image.Height, PixelFormat.Format32bppArgb))
using (var g = Graphics.FromImage(bmp))
{
    g.Clear(Color.Transparent);
    g.DrawImage(image, 0, 0);
    bmp.Save("image.bmp", ImageFormat.Bmp);
}
Run Code Online (Sandbox Code Playgroud)

问题应该是明确的:为什么保存到BMP 会将透明度变为黑色,而保存到PNG 会保留它

只是为了澄清:图像采用Format8bppIndexed格式,其调色板确实包含透明色(例如,它正确地绘制在窗体/图片框上)

编辑:我的错,Bitmap.Save()实际上以Format32bppRgb格式保存BMP ,即使位图格式是Format32bppArgb.

c# transparency drawing bitmap

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

在线检测碰撞

如何在线检测碰撞,最好是点击鼠标?

我不使用XNA.我只使用简单的WinForms.我不会创造一个游戏.

编辑:我从brone链接实现了解决方案,并得到了非常奇怪的结果.这是一个小片段.我做错了什么?粘贴链接

c# drawing collision-detection

0
推荐指数
1
解决办法
1288
查看次数

按IEnumerable <string>分组根本不起作用

我不太确定,为什么分组IEnumerable<string>不起作用.我当然提供自定义IEqualityComparer.

public class StringCollectionEqualityComparer : EqualityComparer<IEnumerable<string>>
{
    public override bool Equals(IEnumerable<string> x, IEnumerable<string> y)
    {
        if (Object.Equals(x, y) == true)
            return true;
        if (x == null) return y == null;
        if (y == null) return x == null;

        return x.SequenceEqual(y, StringComparer.OrdinalIgnoreCase);
    }

    public override int GetHashCode(IEnumerable<string> obj)
    {
        return obj.OrderBy(value => value, StringComparer.OrdinalIgnoreCase).Aggregate(0, (hashCode, value) => value == null ? hashCode :  hashCode ^ value.GetHashCode() + 33);
    }
}

class A
{
    public IEnumerable<string> StringCollection { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# linq grouping iequalitycomparer

0
推荐指数
1
解决办法
218
查看次数