大图:
我发现了Razor似乎是一个限制,我无法想出一个好方法.
玩家们:
假设我有一个这样的模型:
public abstract class BaseFooModel<T>
where T : BaseBarType
{
public abstract string Title { get; } // ACCESSED BY VIEW
public abstract Table<T> BuildTable();
protected Table<T> _Table;
public Table<T> Table // ACCESSED BY VIEW
{
get
{
if (_Table == null)
{
_Table = BuildTable();
}
return _Table;
}
}
}
Run Code Online (Sandbox Code Playgroud)
像这样的子类:
public class MyFooModel : BaseFooModel<MyBarType>
{
// ...
}
public class MyBarType : BaseBarType
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
我希望能够传递MyFooModel到这样定义的剃刀视图:
// FooView.cshtml
@model …Run Code Online (Sandbox Code Playgroud) 我在photoshop中制作了这个草图,我将其转换为HTML和CSS.
HTML:
<div class="pricebox">
<p class="price">360kr</p>
<p class="min">40 min</p>
<p class="info green">Körlektion</p>
</div>
<div class="pricebox">
<p class="price">1700kr</p>
<p class="min">Riskutbildnig 2</p>
<p class="info yellow">Halkan</p>
</div>
<div class="pricebox">
<p class="price">500kr</p>
<p class="min">Riskutbildning 1</p>
<p class="info red">Riskettan</p>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS
body {
font-family: "Myriad Pro",Myriad,"Helvetica Neue",Helvetica,Arial,sans-serif;
}
.pricebox {
display:inline-block;
border: 1px solid #EEEEEE;
border-radius: 3px;
width: 100px;
height: 150px;
margin: 5px;
}
.price{
font-size: 28px;
font-weight:300;
color: #383838;
padding: 11px;
}
.min {
font-size: 11px;
color: #909090;
padding: 0 25px;
}
.info { …Run Code Online (Sandbox Code Playgroud) 问题:
如何从转换OrderedDictionary到Dictionary<string, string>以简洁,但性能方法?
情况:
我有一个我无法触摸的lib,希望我通过一个Dictionary<string, string>.我想建立一个OrderedDictionary,因为在我的代码中,顺序非常重要.所以,我正在使用它OrderedDictionary,当它到达lib时,我需要将其转换为Dictionary<string, string>.
到目前为止我尝试了什么:
var dict = new Dictionary<string, string>();
var enumerator = MyOrderedDictionary.GetEnumerator();
while (enumerator.MoveNext())
{
dict.Add(enumerator.Key as string, enumerator.Value as string);
}
Run Code Online (Sandbox Code Playgroud)
这里必须有改进的余地.有没有更简洁的方式来执行此转换?任何性能考虑?
我正在使用.NET 4.