小编Eya*_*rry的帖子

漂浮不好吗?在它的位置应该使用什么

大约一周前,我已经从桌面设计跳到了css,从那时起就开始阅读更多关于它的内容了.昨天,我在这里看了一篇很长的帖子,那里的海报正在敲响花车,以及它们是如何贬值的.有很多关于inline-block在其位置使用的讨论.

我有一个HTML5设计,我刚刚完成它在firefox和chrome看起来很棒但是当从运行Internet Explorer版本7,8和9的其他计算机进行测试时,设计绝对爆炸.这似乎对我这个设计,我已经浮动权是不是在IE荣幸的事情.它似乎只是包裹在它左边的任何东西.

我想知道我是否可以使用花车,或者我是否应该使用它inline-block.一个如何将两个div彼此相邻的示例,其中一个在左侧,另一个在右侧,使用inline-block将是很好的.

我有另一个困境,希望有人可以帮助我.我在运行XP SP1的旧开发机器上.我可以测试的最好的IE浏览器是6.我想以某种方式获得一些东西,允许我测试版本7,8和9(如果它还没有,则为10).有人可以推荐任何解决方案吗?

css html5

30
推荐指数
2
解决办法
2万
查看次数

从Action <T>的实例获取Invoke MethodInfo的最安全方法

我目前正在研究一种扩展方法,它可以促进问题标题的建议.

当然,我可以.对类型使用GetMetohd("Invoke")方法调用并完成它,但有些东西告诉我这不是"最安全"的方法.类和类型可能会更改,包括BCL中的类和类型.

所以我想出了以下LINQ语句,它可以正常工作:

 public static class ActionExtensions
{
    public static MethodInfo GetInvoke<T>(this Action<T> obj)
    {
        var actionType = obj.GetType();
        var tType= typeof(T);

        return (
             from methodInfo
             in actionType.GetMethods()
             let par = methodInfo.GetParameters()
             where par.Length == 1 && par[0].ParameterType == tType
             select methodInfo
             ).FirstOrDefault();
    }
}
Run Code Online (Sandbox Code Playgroud)

事情是,即使这感觉有些不确定,因为有一天Action可以改变并包含具有这些特征的另一种方法..即使我添加"HasGenericParameters"约束,也不能保证安全.

您对获取与之相关的确切MethodInfo实例的方法有任何想法吗?

"Action<T>.Invoke()"
Run Code Online (Sandbox Code Playgroud)

c# linq reflection delegates action

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

将两个表达式组合成一个管道

我们假设我有以下两种表达方式:

Expression<Func<T, IEnumerable<TNested>>> collectionSelector;
Expression<Func<IEnumerable<TNested>, TNested>> elementSelector;
Run Code Online (Sandbox Code Playgroud)

有没有办法"组合"这些以形成以下:(?)

Expression<Func<T, TNested>> selector;
Run Code Online (Sandbox Code Playgroud)

编辑:

性能非常关键,因此如果可能的话,我会很高兴能够以极少的开销实现最佳解决方案.

非常感谢!

c# expression combinators

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

Monitor.Enter(object,ref bool)锁定获取的实现和顺序

Reference Source我们可以看到上述方法实现如下:

 public static void Enter(Object obj, ref bool lockTaken)
    {
        if (lockTaken)
            ThrowLockTakenException();

        ReliableEnter(obj, ref lockTaken);
        Contract.Assert(lockTaken);
    }
Run Code Online (Sandbox Code Playgroud)

我有一个问题是"if"声明 - 我理解它的重要性,没有必要解释它.我相信这句话也引入了一个非常微妙的问题.

请考虑以下情形:一个线程调用方法并评估if语句,此时发生上下文切换,另一个调用方法,成功获取锁定.

这是一个可行的场景,它表明锁获取的顺序不一定与方法调用的顺序相同.

虽然它在某些情况下可能没有什么作用,但在其他情况下它可能至关重要,所以我的问题是:

1)我是否遗漏了某些内容,或者Monitor类不适合在不可接受的情况下使用?

2)ReliableEnter是否可能遇到类似的情况?

3)是否存在同步机制,确保方法调用的顺序与锁获取的顺序相同?

c# multithreading locking thread-safety race-condition

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