小编Tim*_*non的帖子

通过其容器的内联初始化将值添加到字典中

我有以下City课程.每个城市对象都包含一个字典,其中的键是语言标签(例如:"EN","DE","FR"......),哪些值是相应语言中的城市名称(例如:罗马/罗马等) .

public class City:
{
  private IDictionary<string, string> localizedNames = new Dictionary<string, string>(0);
  public virtual IDictionary<string, string> Names
  {
    get { return localizedNames ; }
    set { localizedNames = value; }
  }
}
Run Code Online (Sandbox Code Playgroud)

无论语言如何,大多数城市都有相同的名称,因此City构造函数确实创建了英文映射:

  public City(string cityName)
  {
    this.LocalizedNames.Add("EN", cityName);
  }
Run Code Online (Sandbox Code Playgroud)

这里有一个问题:有没有办法通过内联初始化添加其他值?

我尝试了以下不同的变体,没有语义成功(不编译):

AllCities.Add(new City("Rome") { Names["DE"] = "Rom" };
Run Code Online (Sandbox Code Playgroud)

我也尝试创建一个新的Dictionary,但这显然会覆盖"EN"参数:

AllCities.Add(new City("Rome") { Names = new Dictionary<string, string>() { { "DE", "Rom" } } };
Run Code Online (Sandbox Code Playgroud)

有谁知道这是否可能?

c# dictionary initialization

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

Asp.Net MVC布局和部分视图

让我们考虑两个使用相同布局的视图:

  • 包含"body"的左列(两个视图的填充方式不同)
  • 右列显示一般信息(通过模型传递)

而不是两次定义正确的部分,我想知道我是否可以创建一个PartialView直接从布局页面链接.

问题是部分视图从正在呈现的视图中隐含地继承了它们的模型.由于每个视图都有自己的模型,因此我在局部视图中最终会出现模型类型不匹配的情况.

从这里我看到两个解决方案:

  • 我可以在ViewBag中插入视图模型的公共部分.不幸的是,这意味着使用此布局的每个视图都必须实现此"约定",但在编译时没有任何内容警告开发人员...
  • 我可以使用多态来使每个视图模型继承自部分视图使用的相同基类(编辑:或接口).这将在一定程度上起作用,但只要我在同一布局中有第二个局部视图,就可能以指数方式增加复杂性.

所以这里是问题:

  • 我是否正确上述假设?
  • 你还有其他可能吗?
  • 对此有何回报?

非常感谢,TB.

c# asp.net-mvc partial-views viewbag

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

展开时jquerymobile可折叠集的滚动位置

我正在使用jQueryMobile(v1.4.0)可折叠集/手风琴来显示元素及其内容的列表,如此jsFiddle所示.

<div id="List" data-role="collapsible-set">
    <div data-role="collapsible" data-content-theme="c">
       <h3>Lorem ipsum 1</h3>
       <p>Suspendisse neque...</p>
    </div>
    <div data-role="collapsible" data-content-theme="c">
       <h3>Lorem ipsum 2</h3>
       <p>Lorem ipsum...</p>
    </div>
</div> 
Run Code Online (Sandbox Code Playgroud)

遇到的问题是当项目的内容长于屏幕的长度时滚动.

例如在小提琴中:

  • 打开第一个可折叠项目
  • 滚动到底部(如果您不必滚动,请调整窗口大小以便您必须...否则问题不可见)
  • 打开第二个项目

=>关闭第一个项目并打开第二个项目,但页面滚动不会改变,您现在看到第二个项目内容的结束.

因此我的问题:是否有一种聪明的方法来强制页面设置屏幕顶部第二项的"标题"?

谢谢,T.

javascript mobile scroll jquery-mobile jquery-mobile-collapsible

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

Phonegap + Windows Phone 8:视口元和缩放问题

我目前正在开发一个Phonegap应用程序,在使用Windows Phone 8进行测试时遇到以下问题(左下方截图):应用程序栏未被删除并留下很大的空白区域.

各种 来源我了解到WP8忽略了以下元标记:

<meta name="viewport" content="width=device-width, height=device-height">
Run Code Online (Sandbox Code Playgroud)

所以你必须使用"ms"预标记再次定义它:

@-ms-viewport {
    height: device-height;
    width: device-width;
}
Run Code Online (Sandbox Code Playgroud)

但这样做会让应用程序的扩展变得混乱.知道发生了什么事吗?

这里是之前的截图:

前,后

css html5 cordova windows-phone-8

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

如何用GraphViz分离节点的图片和标签?

我正在尝试使用 GraphViz 显示带有图像和标签的图表。我想在图像下显示标签(参见labelloc="b"图表上的选项),但不知何故它不起作用。标签和图像重叠。

知道我缺少什么吗?

下面是我正在使用的 DOT 代码和当前结果。

谢谢!

VizGraph 具有 3 个节点、背景图像和标签

digraph {
graph [compound=true, labelloc="b"];
node [shape=box];
edge [dir=none];

Label1[label="Label1",image="images/Avatar1.png"];
Label2[label="Label2",image="images/Avatar2.png"];
Label3[label="Label3",image="images/Avatar3.png"];

{ 
    rank=same;
    Label1 -> h0 -> Label2;
    h0[shape=circle,label="",height=0.01,width=0.01];
}
{
    h0_0;
    h0_0[shape=circle,label="",height=0.01,width=0.01];
}

h0 -> h0_0;
h0_0 -> Label3;
}
Run Code Online (Sandbox Code Playgroud)

graphviz

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

具有接口类型约束的C#泛型方法

我们假设我有:

  • 一般方法 Get<T>
  • 一些接口IEntity,IValue
  • 一些分别实现这些接口的类:Entity- > IEntity,Value- > IValue等.

=>该Get<T>方法是否有办法仅允许接口作为泛型类型?

Get<IEntity>(42); //Allowed
Get<Entity>(42);  //Compiler error
Run Code Online (Sandbox Code Playgroud)

我目前的解决方案如下:

  • Get<T>具有Type约束的通用方法where T: IPersistable(以防止大多数类型作为参数传递)
  • 接口实现 IPersistable

该函数主动检查类型:

public T Get<T>(long id) where T : IPersistable
{
   if (typeof (T) == typeof (IEntity))
      return (T) EntityDao.Get(id);
   if (typeof (T) == typeof (IValue))
      return (T) ValueDao.Get(id);

   //...

   throw new TechnicalException("Type not supported");
}
Run Code Online (Sandbox Code Playgroud)

=>问题是:

  1. 它不干净......我可以忍受它,因为只有很少的类型可以检查
  2. 签名与函数的确无关.它允许IPersistablein,但不是真的< - 真的让我烦恼:(

编辑:我正在考虑这样的限制,以避免我班上的人口过剩.

我在那个类中有类似8或9个泛型方法的东西,它们都以这种方式工作.直观的做法是@DanielHilgarth建议每种类型只有1种方法.目前可以使用4种或5种类型调用这些方法.但是,这仍然意味着该课程中有32-40种方法. …

c# generics interface

3
推荐指数
1
解决办法
3835
查看次数