小编STO*_*STO的帖子

如何使用Unity从配置文件中注入构造函数参数

想象一下,我们有一堂课

public class MyClass
{
    private string _val;
    public MyClass(string val) 
    {
         _val = val;
    }
}
Run Code Online (Sandbox Code Playgroud)

和app.config(或web.config)

<appSettings>
    <add key="value" value="some value" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)

有没有办法在Unity容器中注册MyClass类型并指向Unity从配置文件中为val构造函数参数注入值?

.net c# dependency-injection unity-container

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

在另一个DOM元素上调度鼠标滚轮事件

我有一个带有可滚动div的网页.在可滚动div的顶部,我绝对定位了div,它与可滚动div的一半重叠.

当我将鼠标光标放在可滚动的div上时,我可以用鼠标滚轮滚动它.但是当我将光标移动到重叠的div上时,鼠标滚轮会停止滚动该div(这是正确的行为,因为绝对定位的div不在可滚动的div内).

问题:如何将由绝对定位div接收的滚动事件传递或分派给此基础可滚动div,以使此绝对定位div对于鼠标滚轮事件是"透明的".

我可以在Chrome中使用它,但不能在IE和Firefox中使用.如何重写此代码以使其在IE和Firefox中运行?

if ($.browser.webkit) {    
    $(".overlap-container").bind("mousewheel", function (e) {

        var origEvent = e.originalEvent;
        var evt = document.createEvent("WheelEvent");
        evt.initWebKitWheelEvent(
        origEvent.wheelDeltaX,
        origEvent.wheelDeltaY,
        window,
        0,
        0,
        0,
        0,
        origEvent.ctrlKey,
        origEvent.altKey,
        origEvent.shiftKey,
        origEvent.metaKey);

        $(".scroll-container").get(0).dispatchEvent(evt);
    });
}
Run Code Online (Sandbox Code Playgroud)

请参见此处的示例:http: //jsfiddle.net/HAc4K/5

编辑:此问题最初来自jqGrid - 冻结列不会对鼠标滚轮进行反应.

在Chrome和Firefox中支持很棒的CSS属性: pointer-events:none

html javascript dom

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

具有支持多线程的限制的异步任务的队列

我需要实现一个库来请求vk.com API.问题是API每秒只支持3个请求.我想让API异步.

重要: API应支持从多个线程安全访问.

我的想法是实现一个名为throttler的类,它允许不超过3个请求/秒并延迟其他请求.

接口是下一个:

public interface IThrottler : IDisposable
{
    Task<TResult> Throttle<TResult>(Func<Task<TResult>> task);
}
Run Code Online (Sandbox Code Playgroud)

用法就像

var audio = await throttler.Throttle(() => api.MyAudio());
var messages = await throttler.Throttle(() => api.ReadMessages());
var audioLyrics = await throttler.Throttle(() => api.AudioLyrics(audioId));
/// Here should be delay because 3 requests executed
var photo = await throttler.Throttle(() => api.MyPhoto());
Run Code Online (Sandbox Code Playgroud)

如何实施throttler?

目前我将其实现为由后台线程处理的队列.

public Task<TResult> Throttle<TResult>(Func<Task<TResult>> task)
{
    /// TaskRequest has method Run() to run task
    /// TaskRequest uses TaskCompletionSource to provide new task 
    /// which is …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading async-await

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

如何在asp.net核心中的Razor中更改根路径〜/

我找不到答案的最简单的问题。

我有一个带有Razor的asp.net核心2.1 MVC应用程序。

应用程序广泛使用~/path语法。如果应用程序从域根目录运行(例如,从http:// localhost:5000 /),则一切正常。

但是,当我在非root用户(例如http:// localhost:5000 / app)上运行应用程序时,Razor仍然使用root(/)作为基本路径。

问题:如何配置?如何指定Razor的基本路径~/?必须有一个环境变量:)

PS:应用程序在反向代理后面的docker中运行。

c# razor asp.net-core-mvc asp.net-core

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

访问反应元素的子元素

想象一下有 React 组件

function List() {
   return (<ul>
             <li>1</li>
             <li>2</li>
           </ul>
    );
}
Run Code Online (Sandbox Code Playgroud)

我想创建高阶组件来修改例如所有li节点的样式。

function makeRed(component) {
    return function(props) {
         const element = React.createElement(component, props);

         return React.cloneElement(
            element,
            element.props,
            React.Children.map(
                element.props.children,
                ch => React.cloneElement(ch, { 
                        ...ch.props, 
                        style: {
                           backgroundColor: "red"
                        }
                    },                    
                    ch.props.children
                )
            )
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

但。这是行不通的。孩子们都是空的。

有趣的是,如果我直接创建组件,这会起作用,例如

...    
const element = <ul><li>1</li><li>2</li></ul>;
...
Run Code Online (Sandbox Code Playgroud)

问题:如何访问任何 React 元素的子元素和孙元素?

javascript reactjs high-order-component

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