那个头衔是满口的,不是吗?......
这是我正在尝试做的事情:
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 4/C#...
我需要反序列化包含名为ns1.X的类型的序列化表示的旧配置文件.序列化已经完成了BinaryFormatter.
问题是,经过一轮重构后,类型X已被移动到另一个名称空间,比如ns2.X.
我尝试创建一个从ns2.X派生的新的空ns1.X类型,虽然这绕过了' 找不到类型ns1.X '错误,但反序列化对象中的属性都是null.此外,在此过程中没有调用ctors.
有什么建议?
我在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()的闭包中.
我第二次点击页面时,静态地图已经到位,仍然使用对初始的引用,现在处理了 …
看一下规范页面,我看到%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代码转换为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) 时不时(通常当我偶然发现Eric的一个或Jon的答案时)我想快速阅读C#规范的某些部分.
问题是,我能找到的唯一在线版本适用于VS 2003的C#(即C#v1.2/.NET v1.1).
在当前 MSDN上的规范的版本仅作为一个.docx 下载小于最佳的快速阅读和链接到它的某些部分完全不称职.
我找不到上述文件的在线版本吗?
我有一个我想用Rx处理的用户交互场景.
该场景类似于规范"当用户停止输入,做一些工作"(通常,搜索用户到目前为止输入的内容)(1) - 但我还需要:
对于(1)我使用a IObservable作为用户事件,限制.Throttle()为仅触发事件之间的暂停("用户停止键入").
从这一点,我.Select(_ => CreateMyTask(...).ToObservable()).
这给了我一个IObservable<IObservable<T>>内部observable包含单个任务的位置.
为了得到(2)我最终申请.Switch()只得到最新工作单元的结果.
那么(3) - 取消待定任务?
如果我理解正确,只要有新的内部IObservable<T>,该.Switch()方法就会订阅它并取消订阅前一个内容,从而导致它们Dispose().
也许这可能以某种方式连线触发任务取消?
我们假设一个类型层次结构 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) c# ×4
.net ×3
asp.net-mvc ×2
java ×2
automapper ×1
closures ×1
covariance ×1
format ×1
generics ×1
graphql ×1
inheritance ×1
interface ×1
nhibernate ×1