小编pba*_*aga的帖子

如何修改VS2010添加参考框过滤器?

我已经习惯了新的IDE(它是vc#express),但第一次接触有些令人困惑.当我打开"添加引用"对话框并切换到.NET选项卡时,程序集列表上方的标签指出:"已过滤到:.NET Framework 4".这是真的 - 我只能引用.NET 4.0程序集以及XNA 3.1之类的东西.但是我无法看到较旧的程序集,即Managed DirectX库,它们显然安装在我的计算机上,因为在vc#08中添加ref对它们没有任何问题.

这是什么?如何更改过滤器?标签是只读的.这些听起来像沉闷的家伙的问题,但我找不到答案,但没有直观的解决方案.

提前致谢.

visual-studio-2010

19
推荐指数
4
解决办法
2万
查看次数

什么是非线程安全的?

有很多文章和讨论解释了为什么构建线程安全类是好的.据说如果多个线程同时访问例如一个字段,则只会产生一些不良后果.那么,保持线程安全代码的重点是什么?我主要关注.NET,但我认为主要原因不依赖于语言.

例如,.NET静态字段不是线程安全的.如果默认情况下它们是线程安全的,结果会是什么?(无需执行"手动"锁定).使用(实际上默认为)非线程安全有什么好处?

我想到的一件事是性能(更多的是猜测).这是相当直观的,当函数或字段不需要是线程安全的时,它不应该是.但问题是:为什么?线程安全只是您需要实现的额外数量的代码吗?在什么情况下我可以100%确定例如一个字段不会被两个线程同时使用?

.net c# language-agnostic multithreading thread-safety

15
推荐指数
4
解决办法
1685
查看次数

从C插件向Unity3D发送字节数据的任何正确方法?

这里只是一个好奇的问题.

当您在iOS平台上为Unity编写插件时,插件具有有限的本机到托管回调功能(从插件再到Unity).基本上这个文档: iOS插件Unity文档

说明你能够回拨的函数签名是这样的:

只能从本机代码调用与以下签名对应的脚本方法:function MethodName(message:string)

C中定义的签名如下所示:

void UnitySendMessage(const char*obj,const char*method,const char*msg);

所以这几乎意味着我只能将字符串发送回Unity.

现在在我的插件中,我使用protobuf-net来序列化对象并将它们发送回Unity以进行反序列化.我已经让这个工作,但通过一个解决方案,我觉得非常丑陋,并不是非常优雅:

Person* person = [[[[[Person builder] setId:123]
                    setName:@"Bob"]
                   setEmail:@"bob@example.com"] build];
NSData* data = [person data];

NSString *rawTest = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

UnitySendMessage("GameObject", "ReceiveProductRequestResponse", [rawTest cStringUsingEncoding:NSUTF8StringEncoding]);
Run Code Online (Sandbox Code Playgroud)

基本上我只是将字节流编码为字符串.在Unity中,我然后获取字符串的字节并从那里反序列化:

System.Text.UTF8Encoding encoding=new System.Text.UTF8Encoding();
Byte[] bytes = encoding.GetBytes(message);
Run Code Online (Sandbox Code Playgroud)

这确实有效.但是真的没有办法做到这一点吗?也许有人知道如何以某种替代方式完成它?

c c# objective-c protobuf-net unity-game-engine

8
推荐指数
1
解决办法
4475
查看次数

反映C#中的派生类

我们假设有一个带有虚拟属性的类(我们称之为'P').它在派生类中被覆盖.现在我想使用这样的东西: obj.GetType().GetProperty("P")获取有关覆盖属性的信息.此搜索是不明确的,因为有两个"P"属性(基础和覆盖).所以我键入:obj.GetType().GetProperty("P", BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance)

它只返回覆盖的"P",但如果在编译时我无法猜测是否有覆盖呢?后一个调用将返回null.如果继承的层次结构更大,那么情况就更复杂了.

换句话说,我希望获得"最顶层"覆盖,否则 - 基本属性.实现目标的最简洁方法是什么?目前我只知道一个是查看所有属性并检查名称和声明类型.

c# reflection properties

5
推荐指数
1
解决办法
1954
查看次数

KeyGesture 不接受 Shift+字母数字组合键

我试图在 WPFKeyGesture类的帮助下执行一些 WPF 命令。应用程序工作正常,直到我指定一个由Shift修饰符和字母数字键组成的组合键。例如,以下实例化:new KeyGesture(Key.M, ModifierKeys.Shift)引发异常:

KeyGesture 不支持“Shift+M”键和修饰符组合。

Shift修饰符也不适用于数字(例如Shift+ 2)。但是,Shift+InsertShift+F1组合完美无缺。简单说一下,Shift+ CtrlShift+AltAlt+1等没有问题。

为什么决定禁止Shift+ [字母数字] 手势?它与输入大写字母有什么共同之处吗?是否有与 WPF 命令系统一致的解决方法?(注意:我不是在填充文本框时尝试使用Shift+M手势,而是在没有文本框处于焦点时。

我似乎只找到一个论坛条目,其中提出了这个问题。文档搜索失败。开发人员避免Shift+ [字母数字]是否如此明显?

wpf keyboard-shortcuts keystroke

5
推荐指数
1
解决办法
2455
查看次数

根据C#中的体系结构引用不同的库

是否有可能在我的C#项目中添加对x86和x64中不同dll版本的引用(并在更改配置模式时自动切换它们)?

c# visual-studio-2010

2
推荐指数
1
解决办法
908
查看次数

如何获取 MSBuild 中所有引用 DLL 的路径?

我想获取在.csproj给定以下要求中引用的所有程序集的路径:

  • 包括程序集,无论它们如何被引用(项目、nuget、直接.dll导入)
  • 不触发构建

关于如何为项目参考做这件事有一个很好的答案

<MSBuild Projects="@(ProjectReference)" Targets="GetTargetPath">
  <Output TaskParameter="TargetOutputs" ItemName="MyReferencedAssemblies" />
</MSBuild>
Run Code Online (Sandbox Code Playgroud)

有没有类似的方法来获取.dll所有其他类型引用的路径?

.net c# msbuild

1
推荐指数
1
解决办法
871
查看次数