目前,我正在使用LINQ对象对列表进行排序,然后ToList()对结果进行处理:
var SortedPossibleMoveLocations = (from PML in PossibleMoveLocations
orderby Randomiser.Next()
orderby IsSameType(PML) ? (_Owner[PML] as TileFlowing).UnitsWithin : 0
orderby PossibleMoveLocationOrdering(PML)
select PML).ToList();
Run Code Online (Sandbox Code Playgroud)
我想转换它来做一个inplace sort,我想使用List<T>.Sort()方法.如果我只是按一个事情排序,我知道如何做到这一点,但是,因为我按顺序排序PossibleMoveLocationOrdering(返回一个int)然后通过IsSameType(PML) ? (_Owner[PML] as TileFlowing).UnitsWithin : 0哪个计算结果为a int,然后通过Randomiser.Next()(返回一个随机int)我不这样做知道怎么做.
问题:如何编写比较函数(或者有更好的方法)来执行上面的LINQ查询.
应用程序配置文件中标记<Clear \>内的XML元素的用途是什么<AppSettings>?
我看到它删除了以前添加的设置(请参阅下面的代码),但为什么要这样做呢?
<appSettings>
<add key="LogInformation" value="False"/>
<add key="LogAPIMessages" value="False"/>
<add key="LogErrors" value="True"/>
<clear/> <!--This line removes previously added keys.-->
</appSettings>
Run Code Online (Sandbox Code Playgroud)
我也明白,在代码中操作应用程序设置时,您可以清除现有密钥,但为什么要使用<clear\>XML元素?
而且,出于习惯,我一直把<clear\>元素放在任何<add>元素之前.如果我不这样做,我是否需要这样做?
我想创建一个应用方法的FxRule,只有在从特定类调用该方法时才会这样.
注意:我不想只是将规则应用于特定类的方法,我希望能够处理调用其他方法调用其他方法进行装箱的方法.
我想让FxCop报告与拳击方法相关的问题.
以下是我到目前为止的代码:
using System;
using System.Linq;
using Microsoft.FxCop.Sdk;
using System.Collections.Generic;
class CheckUpdatableComponents : BaseIntrospectionRule
{
private string[] MethodsToCheck = new string[] { "BeginDraw", "BeginRun", "Draw", "EndRun", "EndDraw", "Update" };
/// <summary>Gets the base class hooked up.</summary>
public CheckUpdatableComponents()
: base("CheckUpdatableComponents", "FxCopRules.Rules", typeof(CheckUpdatableComponents).Assembly)
{
}
public override ProblemCollection Check(string namespaceName, TypeNodeCollection types)
{
foreach (var type in types.Where(T => IsSubClassOf(T, "Microsoft.Xna.Framework.Game")))
{
foreach (var MethodToCheck in MethodsToCheck)
{
Method RunMethod = type.GetMethod(Identifier.For(MethodToCheck));
if (RunMethod != null)
{
Visit(RunMethod);
} …Run Code Online (Sandbox Code Playgroud) 使用扩展方法,我们可以轻松地向任何类型添加方法.显然,这在.net的未来版本中开启了扩展方法无法再被调用的可能性(例如,类型现在包括与扩展方法具有相同签名的方法).
这应该是一个问题吗?
如果是这样,我应该如何处理这个问题并设计我的扩展方法,以便在发生这种情况时尽量减少代码更改?
我正在追踪一个可以快速迭代的集合.我也会定期添加项目和删除(特定)项目,因此理想情况下这些操作也会很快.
我正在开发xbox,因此仅限于紧凑的框架(或多或少).将垃圾和对象分配保持在最低限度非常重要,因此我可以为我的对象预先分配空间的任何事情都会很棒.
我将在集合中存储uints(但int如果需要可以是s).一般的解决方案会很好,因为我相信我将来会有需求.
一个.net集合将是理想的,没有一个轻量级和开源的东西会很棒.
是否有适合我需求的收藏课程?如果没有,我将如何创建一个?
为了详细说明,它们是对象id,类应该处理每个帧.它们通常按升序添加,有间隙.没有上限.任何可以删除,这将留下空白.
迭代顺序并不完全重要,但如果顺序一致,它将非常有用(特别是对于调试).
我需要授予应用程序管理员权限,因为它知道它将从用户会话而不是管理员帐户运行.
我看过其他网站,但找不到任何有用的东西.
我尝试编辑清单和其他东西,并插入了行:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
Run Code Online (Sandbox Code Playgroud)
尝试使用ClickOnce发布时,这给了我一个错误,但在我调试时却没有.
你能帮助我吗?
我一直在使用XNA为xbox和windows phone 7制作游戏.现在我想使用MonoGame 创建一个Metro 8 Store应用程序.
我成功地跳过了所有的篮球并让它运转起来,但我遇到了问题Guide.IsTrialMode.
我有单独的逻辑,取决于游戏是否处于试用模式,哪个适用于其他平台,但是当我在本地机器上测试我的应用程序时,或者在模拟器中它总是认为我没有购买游戏.我担心的是,当它在应用程序商店并且人们实际购买它时,逻辑不会改变.
TL; DR:请问Guide.IsTrialMode工作MonoGame为Windows 8商店应用以及如何测试呢?
我正在尝试编写一个需要登录FB以获取文档的T4模板.要做到这一点,我需要引用第三方DLL.可以这样做,如果是这样,怎么办?
本List<T>类实现了IEnumerable<T>接口.它有一个GetEnumerator返回a 的方法List<T>.Enumerator.
我有一个如下所示的类,它给出了一个编译错误,指出返回类型GetEnumerator与接口不匹配.
public class InsertionSortedSet<T> : IEnumerable<T>
{
public struct Enumerator : IEnumerator<T>
{
// Required interface implemented
}
// Other interface methods implemented
public Enumerator GetEnumerator()
{
return new Enumerator(this);
}
}
Run Code Online (Sandbox Code Playgroud)
'Entities.Helpers.InsertionSortedSet'未实现接口成员'System.Collections.Generic.IEnumerable.GetEnumerator()'.'Entities.Helpers.InsertionSortedSet.GetEnumerator()'无法实现'System.Collections.Generic.IEnumerable.GetEnumerator()',因为它没有匹配的返回类型'System.Collections.Generic.IEnumerator'.
鉴于它List<T>似乎返回它自己的Enumerator类(不是接口),但它确实实现了Enumeration<T>我很困惑的接口,因为我看不出我对那个类有什么不同.
List<T>有效?我想返回一个InsertionSortedSet<T>.Enumerator而不是界面,因为它避免拳击,我需要切出.
在控制器中,我可以执行数据库查找等,并添加一些与模型属性关联的错误消息:
public ActionResult CreateJob(CreateJobModel viewModel)
{
var call = FindCall(viewModel.CallNumber);
if (call == null)
{
ModelState.AddModelError("CallNumber", "Idiot User!");
}
}
Run Code Online (Sandbox Code Playgroud)
我不喜欢CallNumber是一个字符串,理想情况下它应该直接引用viewModel.CallNumber,如果我更改该属性的名称,它也应该更改.
我怎样才能做到这一点?
我想,代码最终将会出现这样的情况,它将采用属性访问表达式:
AddModelFieldError(() => viewModel.CallNumber, "Idiot User!");
Run Code Online (Sandbox Code Playgroud)
但我不确定如何创建这样的方法,或者在需要错误消息的子/内部属性的情况下.
c# ×10
.net ×2
app-config ×1
appsettings ×1
asp.net-mvc ×1
clickonce ×1
collections ×1
enumerator ×1
future-proof ×1
fxcop ×1
generics ×1
interface ×1
lambda ×1
linq ×1
list ×1
monogame ×1
performance ×1
privileges ×1
sorting ×1
t4 ×1
vb.net ×1
windows-8 ×1
xbox ×1
xna ×1