小编Cri*_*scu的帖子

.NET C#在父接口中显式实现祖父母的接口方法

那个头衔是满口的,不是吗?......

这是我正在尝试做的事情:

public interface IBar {
     void Bar();
}
public interface IFoo: IBar {
    void Foo();
}
public class FooImpl: IFoo {
    void IFoo.Foo()   { /* works as expected */ }
    //void IFoo.Bar() { /* i'd like to do this, but it doesn't compile */ }

    //so I'm forced to use this instead:
    void IBar.Bar()   { /* this would compile */ }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,调用Bar()是不方便的:

IFoo myFoo = new FooImpl();
//myFoo.Bar(); /* doesn't compile */
((IBar)myFoo).Bar(); /* works, but it's not …
Run Code Online (Sandbox Code Playgroud)

.net c# inheritance interface explicit-implementation

6
推荐指数
2
解决办法
684
查看次数

反序列化为其名称空间已更改的类型

使用.NET 4/C#...

我需要反序列化包含名为ns1.X的类型的序列化表示的旧配置文件.序列化已经完成了BinaryFormatter.

问题是,经过一轮重构后,类型X已被移动到另一个名称空间,比如ns2.X.

我尝试创建一个从ns2.X派生的新的空ns1.X类型,虽然这绕过了' 找不到类型ns1.X '错误,但反序列化对象中的属性都是null.此外,在此过程中没有调用ctors.

有什么建议?

.net c# serialization binaryformatter binary-serialization

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

Automapper + EF4 + ASP.NET MVC - 获取"上下文处理"错误(我知道原因,但是如何修复它?)

我在MVC控制器动作中有这个非常基本的代码.它将Operation模型类映射到非常基本的OperationVM视图模型类.

public class OperationVM: Operation 
{
    public CategoryVM CategoryVM { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我需要加载完整的类别列表才能创建CategoryVM实例.
这是我(尝试)创建一个List<OperationVM>在视图中显示的方式.

public class OperationsController : Controller {

    private SomeContext context = new SomeContext ();

    public ViewResult Index()
    {
        var ops = context.Operations.Include("blah...").ToList();
        Mapper.CreateMap<Operation, OperationVM>()
            .ForMember(
                dest => dest.CategoryVM, 
                opt => opt.MapFrom(
                    src => CreateCatVM(src.Category, context.Categories)
                    //  trouble here ----------------^^^^^^^
                )
            );
        var opVMs = ops.Select(op => Mapper.Map<Operation, OperationVM>(op))
                       .ToList();

        return View(opVMs);
    }
}
Run Code Online (Sandbox Code Playgroud)

我第一次点击页面时一切都很棒.问题是,映射器对象是静态的.因此,在调用时Mapper.CreateMap(),当前的实例将DbContext保存在给予CreateMap()的闭包中.

我第二次点击页面时,静态地图已经到位,仍然使用对初始的引用,现在处理了 …

asp.net-mvc closures entity-framework automapper

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

Java:格式说明符%x和%h之间有什么区别?

看一下规范页面,我看到%h调用Integer.toHexString(),但是我找不到两个说明符之间的任何实际区别.

您能举例说明在同一输入上使用to说明符会产生不同的结果吗?

System.out.println(String.format("%1$h %1$x", 123));
Run Code Online (Sandbox Code Playgroud)

这打印

7b 7b
Run Code Online (Sandbox Code Playgroud)

java format

6
推荐指数
3
解决办法
9062
查看次数

.NET等效于Java有界通配符(IInterf <?>)?

我试图将一些使用(有界)通配符泛型的Java代码转换为C#.我的问题是,Java似乎允许泛型类型在与通配符一起使用时既是协变的又是逆变的.

[这是关于一个更简单的有界通配符案例的前一个问题的衍生物]

Java - 作品:

class Impl { }

interface IGeneric1<T extends Impl> {
    void method1(IGeneric2<?> val);
    T method1WithParam(T val);
}

interface IGeneric2<T extends Impl> {
    void method2(IGeneric1<?> val);
}

abstract class Generic2<T extends Impl> implements IGeneric2<T> {

    // !! field using wildcard 
    protected IGeneric1<?> elem;

    public void method2(IGeneric1<?> val1) {
        val1.method1(this);

        //assignment from wildcard to wildcard
        elem = val1;
    }
}

abstract class Generic<T extends Impl> implements IGeneric1<T>, IGeneric2<T> {

    public void method1(IGeneric2<?> val2) {
        val2.method2(this);
    } …
Run Code Online (Sandbox Code Playgroud)

.net java generics covariance bounded-wildcard

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

哪个是最新的C#规范?

时不时(通常当我偶然发现Eric的一个Jon答案时)我想快速阅读C#规范的某些部分.

问题是,我能找到的唯一在线版本适用于VS 2003C#(即C#v1.2/.NET v1.1).

当前 MSDN上的规范的版本仅作为一个.docx 下载小于最佳的快速阅读和链接到它的某些部分完全不称职.

我找不到上述文件的在线版本吗?

c# documentation specifications

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

NHibernate无状态会话 - 什么是数据别名效果?

无状态会话接口的NHibernate文档包括:

由于缺少第一级缓存,无状态会话容易受到数据别名影响.

我无法找到解释.'数据别名效应'是什么意思?

如果你能举例...... 那就太好了.

nhibernate

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

ASP.NET MVC如何在生产中禁用调试路由/视图?

我需要创建一些辅助控制器操作和相关视图,我希望能够(有条件地?)在生产中禁用.

一种方法是#ifdef DEBUG围绕RegisterRoutes()身体中的特定路线进行编组,但这根本不灵活.

web.config中的设置也一样好,但我不知道如何解决这个问题.

Glimpse或Phil Haack的旧路由调试器这样的既定"插件"项目如何做到这一点?

我宁愿做一些比YAGNI更简单的事......

asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

6
推荐指数
2
解决办法
1978
查看次数

Rx和任务 - 在生成新任务时取消运行任务?

我有一个我想用Rx处理的用户交互场景.

该场景类似于规范"当用户停止输入,做一些工作"(通常,搜索用户到目前为止输入的内容)(1) - 但我还需要:

  • (2)只获得"做一些工作"单位的最新结果(见下文)
  • (3)当新的工作单元开始时,取消正在进行的任何工作(在我的情况下,它是CPU密集型的)

对于(1)我使用a IObservable作为用户事件,限制.Throttle()为仅触发事件之间的暂停("用户停止键入").

从这一点,我.Select(_ => CreateMyTask(...).ToObservable()).

这给了我一个IObservable<IObservable<T>>内部observable包含单个任务的位置.

为了得到(2)我最终申请.Switch()只得到最新工作单元的结果.

那么(3) - 取消待定任务?

如果我理解正确,只要有新的内部IObservable<T>,该.Switch()方法就会订阅它并取消订阅前一个内容,从而导致它们Dispose().
也许这可能以某种方式连线触发任务取消?

c# system.reactive

6
推荐指数
2
解决办法
2186
查看次数

GraphQL - 如何过滤层次结构?("上个月订购小玩意儿的顾客")

我们假设一个类型层次结构 Customer -(hasMany)-> Orders -(hasMany)-> OrderLines

像这样的东西:

Customer {
    Name
    Orders [
        {
            OrderId
            Date
            OrderLines [
                { 
                    ItemCount
                    ItemName
                }
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我想查询整个树,并过滤树中任何级别的属性.

例如:获取订购'小发明'的所有客户.

这就是我尝试的:在层次结构的每个级别,我指定可根据该级别可用属性进行过滤的可选参数:

Customer (Name) {
    Name
    Orders (OrderId, Date) [
        {
            OrderId
            Date
            OrderLines (ItemCount, ItemName) [
                { 
                    ItemCount
                    ItemName
                }
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

GraphQL需要我定义如何解析层次结构中的每个类型,因此在解析时,我会根据查询中的参数进行过滤.

但是,如果我只在深层指定过滤器呢?例如ItemName : 'gizmo'

假设系统中只有一个包含Gizmo的订单行,我希望得到这样的响应:

[{
    Name: "cust12",
    Orders [{
        OrderId: "ade32f",
        OrderLines: [{
            ItemCount: 50000, //customer really likes gizmos
            ItemName: …
Run Code Online (Sandbox Code Playgroud)

graphql

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