小编Qwe*_*tie的帖子

输入词典?

有没有人听说过使用类型作为键并支持继承的"类型字典"?

在我的应用程序中,我想要一个从类型到函数的字典,有点像这样:

Dictionary<Type, Func<object, object>> Transformers;
Run Code Online (Sandbox Code Playgroud)

这个想法是它将用于根据类型以某种方式转换对象:

// Transform an object 'obj'
object result = Transformers[obj.GetType()](obj)
Run Code Online (Sandbox Code Playgroud)

普通字典的缺点是类型必须完全匹配.因此,如果我为IList <T>编写了一个变换器,那么将它放在Transformers字典中是没有用的,因为没有对象具有IList <T>类型(只有T [],List <T>等).换句话说,如果obj是List <T>,则普通字典中的查找将找不到IList <T>的变换器.

假设没有TypeDictionary <TValue>这样的东西,如果不是太难,我可以考虑写一个.有什么想法可以实现吗?

.net

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

如何判断一个类/方法是否可以使用反射访问?

我使用动态程序集在运行时创建派生类。如何使用反射判断基类和基类中的各个方法是否可以在动态程序集中的派生类中使用/调用?

.net reflection visibility reflection.emit

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

是否有针对ipv4和ipv6地址的标准.NET解码器?

我想写一个相当简单的客户端 - 服务器网络应用程序.我只使用纯粹的IPv4网络,但是对于面向未来的代码我会很高兴.我可能会使用TcpListener/TcpClient,因为对WCF的初步调查显示它设置过于复杂并且难以理解.

对于客户端,.NET是否提供了一种工具来自动解码包含IPv4或IPv6地址的字符串(其中IPv4地址包含端口号)?奖励积分,如果它可以解析域名.

对于服务器端,我听说IPv6不使用端口号,那么什么相当于要监听的端口,是否有一种标准方法可以区分IPv4端口号字符串和IPv6等价物?没关系,IPv6服务有16位端口号,就像IPv4服务器一样.

.net ipv4 ipv6

5
推荐指数
2
解决办法
2719
查看次数

F#语法糖

F#显然包含许多语法糖的东西,当我尝试学习它时 - 没有书的帮助 - 我被各种各样的语法所震撼.所有语法糖背后是否隐藏着一种更简单的"核心"语言?是否有一个关于语法糖的备忘单以及它们如何映射到核心语言?

嘿,有没有一个原因F#需要一个不同的"赋值"运算符来进行函数定义而不是lambda,或者它是一个随机决策?例如"let inc x = x + 1"vs"fun x - > x + 1"

syntax f#

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

WPF DataTemplate:如何及时创建工具提示?

我正在使用DataTemplates在ItemsControl中呈现项目。我想显示每个项目的工具提示。如果我使用诸如ToolTip =“ {Binding MyToolTip,Mode = OneWay}”之类的绑定,则WPF会在开始时获取一次工具提示,并且在打开时不会更新工具提示。

我的项目实现了INotifyPropertyChanged,因此原则上我可以为MyToolTip生成更改通知。问题是,工具提示是基于基础模型中的许多信息生成的。这些信息经常更改,并且为MyToolTip属性生成更改通知既麻烦又效率低下。此外,我不希望最初产生所有项目的工具提示。相反,我想强制在打开工具提示时生成一个新的工具提示。我该怎么做?

wpf tooltip datatemplate itemscontrol

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

Windows应用程序的最佳实践?

我想知道应该在Windows上放置配置文件的位置,因为我听说Program Files在Vista上是只读的.想想看,我在最佳实践方面落后于时代,所以我很欣赏你有方便的任何列表,比如......

  • 安装人员的最佳做法?
  • 用户界面的最佳实践?
  • 应该把一个人的DLL放在哪里?何时使用GAC以及如何在其中安装内容?
  • 程序员应该知道的事情,但往往不知道(关于Windows或.NET)

windows

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

更好的矢量数据压缩算法?

我需要压缩一些空间相关的数据记录.目前我使用zlib获得1.2x-1.5x压缩,但我认为它应该可以更像2x.数据记录有各种字段,但是例如,zlib似乎无法压缩点列表.

这些点代表道路网络.它们是XXXXYYYY形式的定点4字节整数对.通常,如果单个数据块具有100个点,则将仅存在X和Y的前两个字节的几个组合(空间相关性).但是底部字节总是在变化,并且必须看起来像随机数据到zlib.

类似地,记录具有4字节ID,其倾向于具有恒定的高字节和可变的低字节.

还有其他算法可以更好地压缩这类数据吗?我正在使用C++.

编辑:请不要再建议更改数据本身.我的问题是关于自动压缩算法.如果有人链接到所有流行压缩算法的概述,我会接受这个作为答案.

c++ compression

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

什么是暂停线程?

Thread.Abort()文件指出,它会抛出ThreadStateException,如果:

正在中止的线程目前已暂停.

这究竟是什么情况?

例如,如果线程位于a中间Thread.Sleep(1000)或等待a WaitHandle,它是否被视为"暂停"?

.net multithreading

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

如何使用protobuf-net序列化不可变的封闭类型?

例如,我想序列化和反序列化System.Drawing.Font这是不可变的,不能进行更改以适应protobuf-net约定。通常,是否可以在protobuf-net中编写某种“自定义”序列化程序?

编辑:根据公认的答案,以下是代理的示例System.Drawing

[ProtoContract]
struct ProtoColor
{
    [ProtoMember(1, DataFormat=DataFormat.FixedSize)]
    public uint argb;
    public static implicit operator Color(ProtoColor c) 
        { return Color.FromArgb((int)c.argb); }
    public static implicit operator ProtoColor(Color c)
        { return new ProtoColor { argb = (uint)c.ToArgb() }; }
}
[ProtoContract()]
class ProtoFont
{
    [ProtoMember(1)]
    string FontFamily;
    [ProtoMember(2)]
    float SizeInPoints;
    [ProtoMember(3)]
    FontStyle Style;

    public static implicit operator Font(ProtoFont f) {
        return new Font(f.FontFamily, f.SizeInPoints, f.Style);
    }
    public static implicit operator ProtoFont(Font f) { 
        return f == null …
Run Code Online (Sandbox Code Playgroud)

protobuf-net

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

如何查看node_modules依赖树?

如何查看基于npm的项目的依赖关系图?

我尝试了Madge,但它忽略了node_modules。

npm node-modules

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