namespace Dic
{
public class Key
{
string name;
public Key(string n) { name = n; }
}
class Program
{
static string Test()
{
Key a = new Key("A");
Key b = new Key("A");
System.Collections.Generic.Dictionary<Key, int> d = new System.Collections.Generic.Dictionary<Key, int>();
d.Add(a, 1);
return d.ContainsKey(b).ToString();
}
static void Main(string[] args)
{
System.Console.WriteLine(Test());
}
}
}
Run Code Online (Sandbox Code Playgroud)
我应该改变什么才能成真?
根据MSDN MethodRental Class允许更改动态模块的方法体.但是由于它的局限性,我无法想到它的实际用法.谷歌也没有帮助我.
任何想法可以用于什么类?
我正在尝试创建Delegate,用于在运行时读取/写入未知类型类的属性.
我有一个泛型类Main<T>和一个如下所示的方法:
Delegate.CreateDelegate(typeof(Func<T, object>), get)
Run Code Online (Sandbox Code Playgroud)
哪个get是MethodInfo应该阅读的属性.问题是当属性返回时int(我猜这种情况发生在值类型中),上面的代码抛出了ArgumentException,因为该方法无法绑定.在字符串的情况下,它运作良好.
为了解决这个问题,我更改了代码,以便使用生成相应的Delegate类型MakeGenericType.所以现在的代码是:
Type func = typeof(Func<,>);
Type generic = func.MakeGenericType(typeof(T), get.ReturnType);
var result = Delegate.CreateDelegate(generic, get)
Run Code Online (Sandbox Code Playgroud)
现在的问题是generic我必须使用创建的委托实例,DynamicInvoke这与使用纯反射来读取字段一样慢.
所以我的问题是为什么第一段代码失败了值类型.根据MSDN,它应该像它说的那样工作
如果方法的返回类型比委托的返回类型更具限制性,则委托的返回类型与方法的返回类型兼容
以及如何在第二个片段中执行委托,以便它比反射更快.
谢谢.
可能重复:
如何在Android中运行时更改当前主题
我有一个Android应用程序,我允许用户在运行时切换主题.切换主题很简单,但在重新创建活动之前不会应用主题.我找到了一种方法将主题应用于当前活动,但如果用户按下后退按钮,之前的屏幕仍然具有旧主题.如何更改这些活动的主题?支持它的应用程序示例:任务免费
我想用NUnit对我的Windows Phone 7库进行单元测试.
是否有与Windows Phone 7兼容的NUnit版本?
是否可以从命令行禁用 Visual Studio 中的特定扩展,而不是手动启动 Visual Studio 并从工具禁用它?
假设我在网站上有一个pdf表单文件,由用户填写并提交给服务器.在服务器端(Asp.Net),我想将我以xml格式接收的数据与填充的空pdf表单合并并保存.
我发现有几种可能的方法:
由于我没有这种任务的经验,你能建议哪个选项会更好/更容易并提供一些额外的提示吗?
先感谢您.
我有一个用C#编写的应用程序,它依赖于sqlite托管提供程序.sqlite提供程序是依赖于平台的(有两个dll用于32位和64位具有相同名称的应用程序).应用程序在运行时基于OS加载所需的一个.
问题是,在创建安装程序时,我无法将64位模式dll添加到安装项目中,因为我收到以下错误:文件"'目标''与项目的目标平台不兼容''.
我会使用其他安装程序,但我有一个自定义操作,必须在安装过程中调用.
所以我想知道是否有一个安装程序可以让我添加32位和64位dll并执行用C#编写的自定义操作.
一个可能的解决方案是有两个安装程序,但我想尽可能避免它.
有什么建议?
我试图通过pid获取进程路径,但我得到Win32Exception(访问ID被拒绝).
代码如下所示:
string path = Process.GetProcessById(pid).MainModule.FileName
Run Code Online (Sandbox Code Playgroud)
我已经尝试将OpenProcess与GetModuleFileNameEx一起使用,但OpenProcess返回0.我甚至尝试根据C#启用SeDebugPrivilege - 如何启用SeDebugPrivilege但它没有帮助.
上面的代码适用于大多数进程,但抛出SynTPHelper.exe(Synaptics Pointing Device Helper)的错误.应用程序在与我的代码相同的用户名下运行.两者,我的应用程序和进程都以64位运行.
是否可以在不以管理员身份运行我的应用程序的情况下检索路径?
编辑
任务管理器能够"打开文件位置",即使我没有以管理员身份运行它.