小编Dam*_*aib的帖子

Autofac将参数传递给嵌套类型

我在我的WCF服务中使用Autofac作为我的IoC.我有一种情况,我想将一个对象传递给嵌套类型(即一种未直接解析的类型,但在解析另一种类型时).据我所知,将此对象作为构造函数参数传递是Autofac中的首选方法.以下是这种情况的一个例子.

嵌套类型:

public class EventLogger<T> : IEventLogger<T>
{
    public EventLogger(IRepository<T> repository, User currentUser) { ... }  
}
Run Code Online (Sandbox Code Playgroud)

我实际上试图解决的类型:

public class SomeBusinessObject  
{  
    public SomeBusinessObject(IEventLogger<SomeLogEventType> logger, ...) { ... }  
}
Run Code Online (Sandbox Code Playgroud)

注册:

var builder = new ContainerBuilder();
builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>));
builder.RegisterGeneric(typeof(EventLogger<>)).As(typeof(IEventLogger<>));
builder.RegisterType<SomeBusinessObject>();
Run Code Online (Sandbox Code Playgroud)

解析我的WCF服务操作:

var currentUser = GetUserFromServiceContext();  
var bo = lifetimeScope.Resolve<SomeBusinessObject>();
Run Code Online (Sandbox Code Playgroud)

我应该如何以及在何处将当前用户传递给我的记录器?我是否应该假设WCF操作必须知道解析SomeBusinessObject需要首先解析IEventLogger并在解析SomeBusinessObject时传递已解析的实例?这样的事情(原谅我,如果这不起作用,这只是一个想法):

var currentUser = GetUserFromServiceContext();  
var logger = lifetimeScope.Resolve<IEventLogger<SomeLogEventType>>(new NamedParameter("currentUser", currentUser));  
var bo = lifetimeScope.Resolve<SomeBusinessObject>(new NamedParameter("logger", logger));
Run Code Online (Sandbox Code Playgroud)

如果这是解决方案,如果类型嵌套得更深,会发生什么?难道这至少打败了依赖注入的一些目的吗?

c# ioc-container autofac

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

ReactiveUI内存使用情况

我最近重构了MVVM应用程序以使用ReactiveUI。基本上,我已经更改了ViewModels中的许多代码以使用ReactiveLists,派生列表和ObservableAsPropertyHelpers。完成后,我注意到该应用程序的内存使用量从100MB增加到550MB(在完全相同的情况下,具有相同的数据和功能)。

我有来自同一个类的大量对象(约3000个),并且使用VS的诊断工具,我注意到该类的OAPH(它们有5个)占用了大量内存。最初,我假设线程问题,所以我决定尝试在测试应用程序中重现该问题。

为此,我创建了一个ViewModel:

public class ItemViewModel : ReactiveObject
{
    private ObservableAsPropertyHelper<bool> myVar1;
    public bool MyProperty1
    {
        get { return myVar1.Value; }
    }

    public ItemViewModel()
    {
        myVar1 = Observable.Return(false).ToProperty(this, x => x.MyProperty1);
    }
 }
Run Code Online (Sandbox Code Playgroud)

为了简便起见,我删除了另外三个完全相同的OAPH。

我的主要ViewModel如下所示:

public class MainViewModel : ReactiveObject
{
    public IReactiveList<ItemViewModel> Items { get; private set; }

    public MainViewModel()
    {
        var items = new List<ItemViewModel>();
        for (int i = 0; i < 3000; i++)
        {
            items.Add(new ItemViewModel());
        }
        Items = new ReactiveList<ItemViewModel>(items);
    }
} …
Run Code Online (Sandbox Code Playgroud)

c# mvvm reactiveui

6
推荐指数
0
解决办法
171
查看次数

响应"表"

我有一个HTML表格,对于小屏幕来说太宽了.我试图摆脱这个表,并使用列表和div来设置更具响应性.

这是我提出的HTML:

<ul>
    <li class="fixture">
        <div class="fixture-date">01/09/2014 20:00</div>
        <div class="fixture-details">
            <div class="home-team">Team A</div>
            <div class="result">Result</div>
            <div class="away-team">Team B</div>
        </div>
        <ul class="forecasts">
            <li class="player-forecast">
                <div class="player">Player 1</div>
                <div class="forecast">Forecast</div>
                <div class="score">3.0</div>
            </li>
            ...
        </ul>
    </li>
    ...
</ul>
Run Code Online (Sandbox Code Playgroud)

我希望它在小屏幕上看起来像这样:

 ----------------------------------------------------
| 01/09/2014                                         |
|----------------------------------------------------|
|             Team A |  Result  | Team B             |
|----------------------------------------------------|
|    Player 1        | Forecast |               3.0  |
|----------------------------------------------------|
|    Player 2        | Forecast |               0.0  |
Run Code Online (Sandbox Code Playgroud)

在宽屏幕上像这样:

                                                  |    Player 1    |    Player 2    |
------------------------------------------------------------------------------------|
| 01/09/2014 …
Run Code Online (Sandbox Code Playgroud)

css responsive-design

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

标签 统计

c# ×2

autofac ×1

css ×1

ioc-container ×1

mvvm ×1

reactiveui ×1

responsive-design ×1