我正在尝试使用Mono 2.10.8.1在Ubuntu 10.04上运行新的ASP.NET Web API beta(VS 2010默认Web API项目).不幸的是,到目前为止,我在所有尝试中都失败了.我得到的最"有意义"的例外情况如下:
System.TypeLoadException: Could not load type 'RestTest.Controllers.ValuesController' from assembly 'RestTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
at (wrapper managed-to-native) System.Type:type_is_assignable_from (System.Type,System.Type)
at System.Type.IsAssignableFrom (System.Type c) [0x00000] in <filename unknown>:0
at System.Web.Mvc.AreaRegistration.IsAreaRegistrationType (System.Type type) [0x00000] in <filename unknown>:0
at System.Web.Mvc.TypeCacheUtil+<>c__DisplayClass1.<FilterTypesInAssemblies>b__0 (System.Type type) [0x00000] in <filename unknown>:0
at System.Linq.Enumerable+<CreateWhereIterator>c__Iterator35`1[System.Type].MoveNext () [0x00000] in <filename unknown>:0
at System.Collections.Generic.List`1[System.Type].AddEnumerable (IEnumerable`1 enumerable) [0x00000] in <filename unknown>:0
at System.Collections.Generic.List`1[System.Type]..ctor (IEnumerable`1 collection) [0x00000] in <filename unknown>:0
at System.Linq.Enumerable.ToList[Type] (IEnumerable`1 source) [0x00000] in <filename unknown>:0 …
Run Code Online (Sandbox Code Playgroud) 我有一个非常基本的测试应用程序,只包含a Window
和a CustomControl
.该窗口包含自定义控件,并具有以下附加属性:
TextOptions.TextFormattingMode="Display"
SnapsToDevicePixels="True"
UseLayoutRounding="True"
RenderOptions.EdgeMode="Aliased"
Run Code Online (Sandbox Code Playgroud)
自定义控件将这5行添加到代码隐藏文件中:
protected override void OnRender(DrawingContext drawingContext)
{
var pen = new Pen(Brushes.Black, 1);
drawingContext.DrawLine(pen, new Point(0, 0), new Point(ActualWidth, ActualHeight));
}
Run Code Online (Sandbox Code Playgroud)
一切都很好.从左上角到右下角对角绘制黑色1px线.完善.不可否认,像素化,但正是我需要的.但是,当我最小化窗口并再次恢复它时,线条变得"模糊".没有在OnRender
窗口恢复后再次调用该方法时会发生这种情况.那么为什么在窗口最小化后绘制的图形会从根本上改变(失去焦点似乎不是问题)?为什么在窗口简单调整大小后一切都恢复正常,我该如何处理这种不需要的行为?每次WindowState
更改看起来有点过分时强制完全调整大小/无效,不是吗?
更新1:
正如@Backlash建议我将自定义控件放在画布中
<Canvas Name="CanvasControl" SizeChanged="FrameworkElement_OnSizeChanged">
<wpfTest:CustomControl x:Name="ChildControl" />
</Canvas>
Run Code Online (Sandbox Code Playgroud)
并处理这样的SizeChanged
事件
private void FrameworkElement_OnSizeChanged(object sender, SizeChangedEventArgs e)
{
ChildControl.Width = CanvasControl.ActualWidth;
ChildControl.Height = CanvasControl.ActualHeight;
}
Run Code Online (Sandbox Code Playgroud)
因为画布内的元素不会自动布局.但是,结果没有改变.
更新2:
掠过我一个想法是听更改窗口状态和强制调整大小-因此一个完整的重绘-窗口及其所有稍微控制改变Width
或Height
窗口的属性:
protected override void OnStateChanged(EventArgs e)
{
if (WindowState != WindowState.Minimized)
{
Width …
Run Code Online (Sandbox Code Playgroud) 我最近解决了在运行时动态创建Linq表达式的问题.我发现的大多数示例都处理了将给定数据库实体的一个属性与单个参数进行比较的相当简单的任务.像这样:
Session.Query.Where(m => m.Name.Contains("test"))
Run Code Online (Sandbox Code Playgroud)
使用更通用的方法也可以实现这一点:
var item = Expression.Parameter(typeof (MyClass), "item");
var property = Expression.Property(item, "Name");
var containsMethod = typeof(string).GetMethod("Contains", new[] { typeof(string) });
var searchExpression = Expression.Constant(searchString, typeof(string));
var containsMethodExpression = Expression.Call(property, containsMethod, searchExpression);
var lambda = Expression.Lambda<Func<MyClass, bool>>(containsMethodExpression, item);
query = query.Where(lambda);
Run Code Online (Sandbox Code Playgroud)
但是,有时候任务有点复杂,人们希望获得如下内容:
Session.Query.Where(m => m.SpecialProperty.Any(f => f.Name.Contains("test")));
Run Code Online (Sandbox Code Playgroud)
其中"SpecialProperty"的类型为List <>,属性"Name"的类型为string.
是否可以动态构建这样的Linq表达式,如何实现?这种方法是否有任何性能问题?
到目前为止,我尝试通过 SendMessage 和其他几个调用使用 GetThemePartSize、GetThemeMetric、GetSystemMetrics、WM_GETTITLEBARINFOEX,但没有任何东西接近真实尺寸(启用了主题的 Windows 7)。
基本上我的问题是:如何获得这些按钮的大小(和位置,理想情况下甚至是手柄)以及从 GetThemePartSize 检索到的值甚至意味着什么?它们有什么用?
谢谢
更新
对于汉斯:
[DllImport("uxtheme", ExactSpelling=true)]
private extern static Int32 GetThemePartSize(IntPtr hTheme, IntPtr hdc, WindowPart part, WindowPartState state, ref RECT pRect, ThemeSize eSize, out SIZE size);
[StructLayout(LayoutKind.Sequential)]
private struct RECT
{
public int left;
public int top;
public int right;
public int bottom;
}
[StructLayout(LayoutKind.Sequential)]
private struct SIZE
{
public int cx;
public int cy;
}
private const int TS_TRUE = 1;
private const int CBS_NORMAL = …
Run Code Online (Sandbox Code Playgroud) 很可能是一个相当微不足道的问题,但我找不到合适的答案.我想返回一个"JsonResult"而实际结果没有任何属性名称.这是我想要实现的一个小例子:
["xbox",
["Xbox 360", "Xbox cheats", "Xbox 360 games"],
["The official Xbox website from Microsoft", "Codes and walkthroughs", "Games and accessories"],
["http://www.xbox.com","http://www.example.com/xboxcheatcodes.aspx", "http://www.example.com/games"]]
Run Code Online (Sandbox Code Playgroud)
是的,一些非常普通的源代码已经存在,但我怀疑这是否有任何意义.但是,这里是:
public JsonResult OpensearchJson(string search)
{
/* returns some domain specific IEnumerable<> of a certain class */
var entites = DoSomeSearching(search);
var names = entities.Select(m => new { m.Name });
var description = entities.Select(m => new { m.Description });
var urls = entities.Select(m => new { m.Url });
var entitiesJson = new { search, names, description, urls …
Run Code Online (Sandbox Code Playgroud) .net ×5
wpf ×2
c# ×1
json ×1
linq ×1
mono ×1
nhibernate ×1
opensearch ×1
performance ×1
titlebar ×1
windows ×1
windows-7 ×1