我在iOS设备上收到以下错误:
ExecutionEngineException:
1<System.Collections.Generic.KeyValuePair在使用--aot-only运行时尝试JIT编译方法'System.Linq.OrderedEnumerable 2>:GetEnumerator()'.
我正在使用Unity3D,我知道错误是由于LINQ表达式在编译Unity到iOS时排序值类型有问题.因为(我认为)表达式试图使用反射来实例化实现IComparer <TKey>接口的新类型.这适用于参考类型,但不适用于Unity iOS版本的值类型.
所以我的想法是,因为我知道在这种情况下我总是试图订购一组int.我可以绕过通用的ICompare <TKey>并创建我自己的自定义比较器.
public class IntCompare : Comparer<int> {
public override int Compare (int x, int y)
{
return x - y;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,使用OrderBy仍然会给我错误.有什么我不理解为什么我的方法不起作用?
我的表情:
OptimizeMaxCommitList(members
.OrderBy((memberid) => memberid.Value, new IntCompare())
.Skip(1)
.ToDictionary(pair => pair.Key, pair => pair.Value)
,maxCommit);
Run Code Online (Sandbox Code Playgroud) 我想创建一个函数,我可以在其中传入任意对象并检查它是否具有具有特定值的特定属性。我试图使用反射来做到这一点,但反射仍然让我有点困惑。我希望有人能指出我正确的方向。
这是我正在尝试的代码,但显然它不起作用:
public static bool PropertyHasValue(object obj, string propertyName, string propertyValue)
{
try
{
if(obj.GetType().GetProperty(propertyName,BindingFlags.Instance).GetValue(obj, null).ToString() == propertyValue)
{
Debug.Log (obj.GetType().FullName + "Has the Value" + propertyValue);
return true;
}
Debug.Log ("No property with this value");
return false;
}
catch
{
Debug.Log ("This object doesnt have this property");
return false;
}
}
Run Code Online (Sandbox Code Playgroud) 是否可以通过堆栈溢出 api 获取用户所做的答案和问题的数量?
目前,我找到了一个hacky的方法。它包括获取用户问题(或答案)的 json 响应,然后计算数组中的项目数。
但是,由于该数据是分页的,因此需要多个请求才能将它们全部计算在内。我宁愿找到一种仅使用单个请求来获取计数的方法。
我从https://api.stackexchange.com/docs获取我的信息 可能 我遗漏了什么?
我设置了一个方法来传递一个类型作为参数
private void SomeMethod(System.Type type)
{
//some stuff
}
Run Code Online (Sandbox Code Playgroud)
有没有办法强制执行该类型,以便您只能传入从特定基类继承的类型?
在MS Access中,我需要将所有查询备份到文本文件
我可以很好地与其他Access对象一起使用,例如以下是将所有报告备份到文本文件的示例
Dim oApplication
Set oApplication = CreateObject("Access.Application")
For Each myObj In oApplication.CurrentProject.AllReports
WScript.Echo "Report " & myObj.fullname
oApplication.SaveAsText acReport, myObj.fullname, sExportpath & "\" & myObj.fullname & ".report"
Next
Run Code Online (Sandbox Code Playgroud)
我尝试了以下备份所有查询
For Each myObj In oApplication.CurrentData.AllQueries
WScript.Echo "Query " & myObj.fullname
oApplication.SaveAsText acQuery, myObj.Name, sExportpath & "\" & myObj.Name & ".query"
Next
Run Code Online (Sandbox Code Playgroud)
但是,生成的文本文件是查询输出.它绝对不是我正在寻找的查询定义.
这里要清楚的是我试图导出到文本的图像

有没有人对如何实现这一点有任何想法?
所以我想为api创建一个扩展方法,api已经密封了.
如果您了解扩展方法,以下应该看起来很熟悉.
private static List<Member> memberList = new List<Member>();
public static List<Member> GetMemberList(this GameObject go)
{
return memberList;
}
Run Code Online (Sandbox Code Playgroud)
请注意,要声明扩展方法,它需要是静态的,并且因为它需要是静态的,所以我通过GameObject类型访问的List必须是静态的.我希望每个GameObject都有自己的成员列表.但是我很确定,因为这是一个静态字段,每个实例GameObject都会指向相同的静态memberList.
我的假设是真的吗?如果是这样,可能会有什么替代方案?我想避免将GameObject放在也包含memberList的包装类中,因为api只允许在运行时检测和操作GameObjects.有一些方法可以通过gameObject反向引用包装类,但这会增加我希望避免的代码的复杂性.
我需要能够遍历实例化的特定类型的所有对象.
传统上,我会将这些对象缓存在列表中,并在需要时迭代它们.然而,对象是数据量很大,并且有很多对象因此我担心在程序的整个过程中将很多对象保留在内存中.
另一方面,我正在研究查询它们并将查询存储在IEnumerable中,以便它们实际上不存储在内存中,而是在每次迭代时解析.然而,有了这个,我担心必须在每次迭代中找到每个对象的开销.(我仍然决定实际上会有效地做到这一点的机制,但那是另一个问题)
在我看来,这是你需要找到一个balence,缓存可能是内存密集的问题之一,但IEnumerable可能是处理密集型.所以我想知道其他人对此的看法.