小编iam*_*ael的帖子

你如何找到界面的所有实现?

假设您有一个在C#中定义的接口.查找提供接口实现的所有类的最简单方法是什么?

蛮力方法是在Visual Studio中使用"查找引用"并手动查看结果以将实现与实现分开,但是对于大型代码库中的接口而言,这些接口被相对较少的实现大量引用,这可以是耗时且容易出错.

在Java中,在代码库上运行javadoc(使用-private选项包含私有类)将生成接口的文档页面(例如Comparable),其中包括接口的所有实现类以及任何子接口(尽管它没有包括实现子接口的类,通过深入查看列出的子接口可以相对容易地确定这些类.这是我正在寻找的功能,但使用C#和Visual Studio.

c# resharper reflector visual-studio

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

在Django中,如何在没有显式查询的情况下从多对多关系中的额外字段中检索数据?

鉴于Django 1.0中的情况,您可以在多对多关系中获得额外数据:

class Player(models.Model):
  name = models.CharField(max_length=80)

class Team(models.Model):
  name = models.CharField(max_length=40)
  players = models.ManyToManyField(Player, through='TeamPlayer', related_name='teams')

class TeamPlayer(models.Model):
  player = models.ForeignKey(Player)
  team = models.ForeignKey(Team)
  captain = models.BooleanField()
Run Code Online (Sandbox Code Playgroud)

多对多关系允许您使用属性访问相关数据(Team对象上的"players"属性或通过其相关名称使用Player对象上的"teams"属性).当其中一个对象被放置到模板的上下文中时(例如,一个团队放置在一个Context中,用于渲染一个生成Team的名单的模板),可以访问相关对象(即团队中的玩家),但是怎么能额外的数据(例如'队长')可以与来自上下文中对象的相关对象(例如团队)一起访问,而无需在上下文中添加额外的数据?

我知道可以直接查询中间表来获取额外的数据.例如:

TeamPlayer.objects.get(player=790, team=168).captain
Run Code Online (Sandbox Code Playgroud)

要么:

for x in TeamPlayer.objects.filter(team=168):
  if x.captain:
    print "%s (Captain)" % (x.player.name)
  else:
    print x.player.name
Run Code Online (Sandbox Code Playgroud)

然而,直接在中间表上执行此操作需要我在模板的上下文(TeamPlayer上的查询结果)中放置其他数据,如果可能的话,我试图避免这种情况.

python django manytomanyfield

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

线程安全使用System.Configuration

有没有一种简单的方法可以通过线程安全的接口访问自定义的基于System.Configuration的配置数据,而不需要每个执行上下文加载/重新加载配置信息,这在计算上会很麻烦?

与Microsoft的.Net库文档中的大多数(所有?)其他类一样,System.Configuration类使用以下线程安全信息进行注释:

此类型的任何公共静态(在Visual Basic中为Shared)成员都是线程安全的.任何实例成员都不保证是线程安全的.

通过我的阅读,不能假定ConfigurationSectionConfigurationManager.GetSection(string)和其他类似方法(例如OpenExeConfiguration(string exePath).GetSection(string))返回的对象是线程安全的,因此不应该被多个执行上下文使用.这禁止ConfigurationSection在单例中存储否则是线程安全的,因为虽然对节对象的访问可能是安全的,但对象本身的成员本身并不安全.

GetSection但是,多次调用可能需要重新解析配置文件并分配ConfigurationSection具有高开销的新实例,因为初始化后配置不太可能发生变化.此外,将配置数据复制到另一个已成为线程安全的对象似乎打败了首先使用内置配置包的主要好处之一(轻松访问经过类型转换和验证的配置信息,而无需太多样板码).

那么,是否有一种方法可以System.Configuration以线程安全的方式使用而无需过多地解析和分配配置节?ConfigurationSection即使您通过System.Configuration接口访问它,实现您自己也可以免除Microsoft提供的保证(如果是这样的话,当您需要访问基础ConfigurationSection索引器时,如何实现它是线程安全的?访问配置的数据)?

.net c# multithreading system.configuration

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

如何将外部文件与程序集关联

假设您有一个类库项目,其中包含任何数量的补充文件,这些文件也需要包含在已编译的程序集中(例如,简单的文本文件,甚至是由程序集作为互操作层包装的传统非托管DLL).虽然将补充文件嵌入到程序集本身是相对简单的,但我们遇到这种情况,这是不可能的或者只是不合需要的.我们需要将它们作为"sidecar"文件(即文件旁边的文件,可能在相对于程序集的子目录中)

将这些文件添加到项目中并为指定的"复制到输出目录"指定适当的值似乎足以满足解决方案中完全独立的项目.但是,如果另一个解决方案中的单独项目添加了对程序集的引用,则它不会自动拾取其sidecar文件.项目中有没有办法以某种方式标记生成的程序集,以便引用程序集的任何内容都知道它需要包含相关的sidecar文件?你怎么做到这一点?

visual-studio

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

更好的解决方案,用于Python Threading.Event半忙等待

我正在使用非常标准的Threading.Event:主线程在一个循环中运行:

event.wait(60)
Run Code Online (Sandbox Code Playgroud)

其他阻止请求,直到回复可用,然后启动:

event.set()
Run Code Online (Sandbox Code Playgroud)

我希望主线程选择40秒,但事实并非如此.从Python 2.7源代码Lib/threading.py:

# Balancing act:  We can't afford a pure busy loop, so we
# have to sleep; but if we sleep the whole timeout time,
# we'll be unresponsive.  The scheme here sleeps very
# little at first, longer as time goes on, but never longer
# than 20 times per second (or the timeout time remaining).
endtime = _time() + timeout
delay = 0.0005 # 500 us -> initial delay of 1 ms
while …
Run Code Online (Sandbox Code Playgroud)

python events multithreading busy-loop

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

在保存新实体时,NHibernate如何使用数据库默认值?

考虑以下简单的C#类:

public class Entity
{
    public Entity() { }
    public virtual int Id { get; private set; }
    public virtual DateTime DateCreated { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

使用以下简单的NHibernate映射进行映射:

<class name="Entity" mutable="false">
    <id name="Id">
        <generator class="native">
    </id>
    <property name="DateCreated"/>
</class>
Run Code Online (Sandbox Code Playgroud)

对于以下简单的数据库模式:

CREATE TABLE Entity (
    Id int IDENTITY(1,1) PRIMARY KEY,
    DateCreated datetime NOT NULL DEFAULT getUtcDate()
)
Run Code Online (Sandbox Code Playgroud)

在创建一个新的实例Entity并保存到数据库时,DateCreated如果值为的话,如何指示NHibernate使用数据库的默认值null?或者,我如何指定NHibernate 在插入时应该使用getUtcDate()函数的结果作为DateCreated字段的值?

虽然我可以轻松添加

DateCreated = DateTime.Now;
Run Code Online (Sandbox Code Playgroud)

在Entity构造函数中,这是使用应用程序服务器的本地时钟,我需要使用数据库的本地时钟来确保当多个应用程序服务器各自具有可能的非同步本地时钟时的一致性.

nhibernate

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

如何在C#中针对其目标参数类型验证复合格式字符串?

给定用户提供的复合格式字符串(用于String.Format)和表示将用于格式化复合格式字符串的参数的一组类型,如何检查用户提供的值是否有效?

它应该是很容易地创建一个正则表达式来检查参数占位符的一般语法匹配" {index[,alignment][:formatString]}"每个文档.并且更难以验证复合格式字符串中占位符的索引是否小于实际的类型化参数数量(即它们不引用将不会给出的参数).但是,如果已知传入参数的类型,则还应该可以验证" :formatString"是否适合这些类型.

例如,{0:dddd MMMM}当第一个参数类型(0索引)是数字(String.Format("{0:dddd MMMM}", 1234)产生" dddd MMMM")时,您要验证用户未指定" "作为格式字符串.:formatString按类型的" "选项数量太大,无法手动检查所有内容.还有其他方法吗?或者您是否只需要与可能指定错误格式字符串的用户一起生活?

假设有没有自定义IFormatProvider,ICustomFormatterIFormattable实现在这里打球.只是.NET Framework中已有的基本类型.用于解决自定义内容的奖励积分.

c# validation string.format

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

从具有相同属性的另一个对象创建对象

我在C#中有一个对象,可以说20个属性,它是数据合成的一部分.我还有另一个具有类似属性的业务实体,我想从响应对象中填充它.除了将一个对象的每个属性分配给另一个对象的相应属性之外,有没有办法做到这一点?

.net c#

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

使用JList时避免"未经检查的调用"警告

我正在制作一个简单的文件搜索程序,它提供了一个GUI.它运行完美,但是,ActionListener当我更新输出时,我在搜索按钮中收到编译时警告JList.反正有没有避免这个警告?

java swing warnings actionlistener jlist

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