小编Joe*_*ite的帖子

将函数分配给对象属性

基于我对Python数据模型的理解,特别是"实例方法"小节,每当您读取其值为"用户定义函数"类型的属性时,一些魔法就会启动并获得绑定实例方法而不是实际方法,原始功能.这就是为什么self在调用方法时没有显式传递参数的原因.

但是,我希望能够用具有相同签名的函数替换对象的方法:

class Scriptable:
    def __init__(self, script = None):
        if script is not None:
            self.script = script   # replace the method
    def script(self):
        print("greetings from the default script")

>>> scriptable = Scriptable()
>>> scriptable.script()
greetings from the default script

>>> def my_script(self):
...     print("greetings from my custom script")
...
>>> scriptable = Scriptable(my_script)
>>> scriptable.script()
Traceback (most recent call last):
  ...
TypeError: script() takes exactly 1 positional argument (0 given)
Run Code Online (Sandbox Code Playgroud)

我正在创建一个实例Scriptable,并script使用单个参数将其属性设置为用户定义的函数,就像在类中定义的那样.因此,当我读取scriptable.script …

python methods

22
推荐指数
3
解决办法
7452
查看次数

我可以依赖LINQ ToArray()总是返回一个新实例吗?

我正在寻找一种简单的方法来克隆一个IEnumerable<T>参数供以后参考.LINQ的ToArray扩展方法似乎是一种很好,简洁的方法.

但是,我不清楚它是否总能保证返回一个新的数组实例.一些LINQ方法将检查可枚举的实际类型,并尽可能检查快捷方式; 例如,Count()将查看该方法是否实现ICollection<T>,如果是,将直接读取其Count属性; 如果必须,它只迭代集合.

鉴于实际上存在短路的心态,似乎如果我调用ToArray()已经数组的东西,ToArray()可能会短路并简单地返回相同的数组实例.这在技术上可以满足ToArray方法的要求.

从快速测试看来,在.NET 4.0中,调用ToArray()数组确实会返回一个新实例.我的问题是,我能依靠这个吗?我是否可以保证ToArray始终返回一个新实例,即使在Silverlight和.NET Framework的未来版本中也是如此?在这一点上是否有明确的文件?

.net linq toarray

21
推荐指数
2
解决办法
1665
查看次数

模拟WinRT的框架?

感觉就像我必须遗漏一些东西,但是当我为WinRT代码编写单元测试时,我无法找到任何可以使用的模拟对象框架.那里有任何支持WinRT的模拟框架吗?

我知道MoqRT,但据我所知,它在构建时执行codegen(虽然通过一个脆弱的声音集成,这不是实际构建过程的一部分),但它感觉更像是一个hack而不是一个实现.

DynamicMethod(轻量级代码生成背后的类)显然在WinRT中不可用.但似乎支持表达式树,包括它们的编译方法; 所以似乎模拟对象框架应该是可行的.

那里有任何WinRT模拟框架吗?

mocking windows-runtime

21
推荐指数
2
解决办法
2781
查看次数

如何禁用ASP.NET Core的IIS Express启动配置文件?

我正在编写一个使用WebListener而不是Kestrel 的ASP.NET核心应用程序(在完整的.NET Framework上).我正在使用Visual Studio 2015和Update 3,以及".NET Core 1.0.1工具预览2" (截至本文撰写时,下载网站上的最新VS工具).

因为我正在使用WebListener,并且因为WebListener与IIS Express不兼容,所以我想在Visual Studio中禁用"IIS Express"启动配置文件,这样当我的队友打开此解决方案时,他们的Visual Studio将默认运行控制台应用程序而不是IIS Express,他们只能点击运行而不会出错.

但到目前为止,我还没有能够摆脱VS的"IIS Express"发布配置文件.项目属性>调试选项卡允许我编辑配置文件列表,但是当我选择"IIS Express"配置文件时,"删除"按钮被禁用.如果我直接编辑launchSettings.json,并从"profiles"下删除"IIS Express"元素,则File> Save操作会以静默方式将"IIS Express"配置文件插回到保存到磁盘的JSON中!

显然,Microsoft 确实希望始终拥有"IIS Express"启动配置文件,即使它不一定与所有ASP.NET Core项目兼容.但值得一提的是:有没有人找到一种方法来禁用 ASP.NET Core项目中的"IIS Express"启动配置文件,并且只有启动配置文件选择器中的自主选项?

¹对于好奇的人,我正在使用WebListener,因为它可以让我在没有安装IIS的计算机上自行托管Windows服务并仍然支持NTLM身份验证.Kestrel仅在IIS中托管时支持NTLM,而不是在自托管时支持NTLM.

.net visual-studio-2015 asp.net-core

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

更改超链接前景而不会丢失悬停颜色

我正在编写一个WPF应用程序,我希望我的一些超链接是默认的蓝色,其他的是绿色.没问题 - 我可以设置Foreground:

<TextBlock><Hyperlink Foreground="#0C0">Mark as done</Hyperlink></TextBlock>
Run Code Online (Sandbox Code Playgroud)

麻烦的是,当我这样做时,悬停效果消失了.在普通的超链接中,当我将鼠标移到链接上时,它会变为红色,当我将鼠标移开时,它会变回蓝色.但是在分配了Foreground属性的超链接中,它始终是那种颜色 - 红色悬停被完全抑制.

如何在不丢失默认悬停行为和颜色的情况下更改超链接的颜色?

wpf hyperlink

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

使用XAML文件作为矢量图像源

我希望能够使用最好在XAML中定义的矢量图形作为图像控件的源,就像我现在可以像PNG一样使用光栅图像.这样我就可以轻松地在位图和矢量图像之间进行混合和匹配,如下所示:

<StackPanel>
    <Image Source="Images/Namespace.png"/>
    <Image Source="Images/Module.xaml"/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

Module.xaml很可能将<DrawingImage>其作为根元素而不是<UserControl>.

实际上,我真正想要的是这个,所以我的ViewModel可以自行选择光栅或矢量图像:

<Image Source="{Binding ImageUri}"/>
Run Code Online (Sandbox Code Playgroud)

这可能吗?Image.Source可以从给定的URI加载XAML类吗?或者只能加载位图资源?

c# wpf xaml vector-graphics

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

如何获得WPF窗口的ClientSize?

在WinForms中,Form有一个ClientSize属性(继承自Control),它返回其客户区的大小,即标题栏和窗口边框内的区域.

我在WPF中没有看到任何类似的东西:没有ClientSize,ClientWidth,ClientHeight,GetClientSize(),或者我可以想到的其他任何猜测名称的东西.

如何获取WPF窗口的客户端大小?

size wpf

18
推荐指数
2
解决办法
3万
查看次数

有没有办法格式化C#double?

有没有办法得到一个显示a的确切值的字符串double,所有小数位都需要表示它在10的基本精确值?

例如(通过Jon Skeet和Tony the Pony),当你输入时

double d = 0.3;
Run Code Online (Sandbox Code Playgroud)

实际值d是完全正确的

0.299999999999999988897769753748434595763683319091796875
Run Code Online (Sandbox Code Playgroud)

每个二进制浮点值(忽略诸如无穷大和NaN之类的东西)将解析为终止十进制值.因此,在输出中有足够的精度数字(在这种情况下为55),您可以随时获取a中的任何内容double并以十进制显示其精确值.当需要解释浮点运算的奇怪性时,能够向人们展示确切的值是非常有用的.但有没有办法在C#中做到这一点?

我已经尝试了所有标准数字格式字符串,无论是否指定了精度,并且没有给出确切的值.一些亮点:

  • d.ToString("n55")输出0.3后跟54个零 - 它通常会"轮到您可能想要看到的内容",然后在最后添加更多的零.如果我使用自定义格式字符串,也是一样的0.00000...
  • d.ToString("r")给你一个足够精确的值,如果你解析它,你会得到你开始时相同的位模式 - 但在这种情况下它只是输出0.3.(如果我处理的是计算结果,而不是常量,这会更有用.)
  • d.ToString("e55")输出2.9999999999999999000000000000000000000000000000000000000e-001- 一些精度,但不是所有它像我正在寻找.

是否有一些我错过的格式字符串,或其他一些库函数,或NuGet包或其他库,能够将a转换为double具有完全精度的字符串?

c# floating-point floating-point-precision

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

真的,处理字体有多重要?

我知道最好的做法是在任何实现IDisposable的对象上调用Dispose,尤其是包装有限资源的对象,如文件句柄,套接字,GDI句柄等.

但我遇到的情况是我有一个具有Font的对象,我将不得不通过几层对象检测IDisposable,并查看很多用法,以确保我总是让Font处理掉.而且我想知道这是否值得复杂.

如果Font包装了一个HFONT,那将是一回事,因为GDI资源是系统全局的.但是Font没有包装GDI句柄; 它是GDI +,它是一个完全独立的系统,据我所知,它是流程本地的,而不是像GDI那样的系统全局.与Image不同,Font不会保留文件系统资源(我知道,无论如何).

所以我的问题是:让Font收集垃圾的实际成本是多少?

我知道我会在终结器上受到轻微的打击,但如果"泄露的"字体的数量很小(比如说6个),那么真正的打击就不会引人注意.除了终结器之外,这与分配中型阵列并让GC清理它似乎没什么不同 - 它只是内存.

在让Font得到GCed时,我不知道有什么成本吗?

.net fonts gdi+ garbage-collection finalizer

17
推荐指数
3
解决办法
5920
查看次数

在Python中,如何检测计算机是否使用电池供电?

我正在玩pygame,我想做的一件事就是当计算机使用电池供电时减少每秒的帧数(降低CPU使用率并延长电池寿命).

如何从Python中检测到计算机当前是否使用电池供电?

我在Windows上使用Python 3.1.

python windows pygame

17
推荐指数
2
解决办法
5640
查看次数