小编Iva*_*vov的帖子

.NET自定义配置 - 我可以使用非同类元素进行元素集合吗?

我在app/web.config中注册了自定义配置部分,让我们调用它MySection.我ElementCollection在该部分中有一个元素,称为MyElements.在元素集合中,我想拥有由不同类表示的元素 - 这个想法是这些类似的类具有一些常见属性,一些特定于实例.

这是一些xml配置示例:

<MySection>
  <MyElements>
    <Element1 name="someProp1" value="someValue" />
    <Element2 name="someProp2" format="{0}{1}" />
  </MyElements>
</MySection>
Run Code Online (Sandbox Code Playgroud)

在我的简单示例中,所有元素必须具有"name"属性,一些元素还具有"value"属性,另一个元素具有"format"属性.在这里,我希望Element1Element2在.NET运行时中由两个不同的类表示,这两个类具有定义"name"属性的公共基类.

至于我已经深入研究.NET配置,我得到的印象是元素集合(如'MyElements'在这里)应该包含同类元素(只有一种类型).那么,是否有可能实现我想要的东西 - 让它包含不同类的元素.我们的想法是避免为不同的元素类型提供多个元素集合,而不是为每个自定义ConfigurationElement实现编写所有重复属性.

c# configuration

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

我可以在C#库中使用全局预处理器定义吗?

在C#中,您可以使用类似于C/C++语法的宏进行条件编译.这将使以下事件发生:

#define MYMACRO
....
#if MYMACRO
//some C# code logic 
#else
//some other C# code logic
Run Code Online (Sandbox Code Playgroud)

我需要在C#库项目的专用文件中定义一些宏,一旦定义,我需要这些宏在整个库中可见.问题是上面的代码只适用于单个文件.

我知道解决此问题的另一种方法是将宏添加到构建命令.这将负责为整个宏定义宏.dll,我将#if - #else在库中的任何地方进行检查.这种方法的问题是我希望能够轻松维护宏.将它们放在项目内的文件中将是完美的.我也想在里面发表一些评论,以便我知道每个宏在做什么.如果我必须将宏作为构建参数传递,这将不适用.另一个原因是能够通过简单地评论和检查行为来打开/关闭宏.

有没有一个体面的方式来实现我的要求?我宁愿不处理任何类似的构建自动化工具MSBuild,NAnt或者类似的东西,如果没有其他方法可行,我会很感激你认为哪个是你认为更好的选择.

.net c# c-preprocessor

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

是否可以通过subclipse恢复失败的结账?

我在Ubuntu Linux下使用STS 2.9和Subclipse插件.我正在尝试检查整个存储库(使用所有中继和分支)并将其整齐地显示为工作区中的项目.我通常做的是检查存储库的根目录.我需要整个存储库的原因是我在分支和主干版本上工作,所以拥有它对我来说更容易工作.这就是我想要实现的目标

Workspace
  repo/
    branches/
    tags/
    trunk/
  other_repo/
    branches/
    tags/
    trunk/
  some_other_workspace_entry(ex. java project)
Run Code Online (Sandbox Code Playgroud)

不幸的是,我们有一个超过5GB大小的存储库,并且它将永远用于subclipse检查它,直到最后它抛出一个错误.所以,我最终得到了一个未完全检出的存储库,我无法继续检查它.我必须删除所有已检出的数据并重新启动它(直到它再次失败),或者单独检出主干和分支 - 因此在我的工作空间中有一个主干和分支条目,我必须避免.

问题是 - 有没有办法继续未完成的回购结账?或者可以通过子文件夹检查它,但仍然在我的工作区中具有所需的树结构?如果我需要通过文本编辑器手动编辑一些工作区文件,哪些以及如何?

subclipse svn svn-checkout

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

使用[Obsolete]属性指示开发人员不要使用API​​的一部分是一个好习惯

最近我写了一些可序列化的对象,它也处理特定的逻辑并具有特定的生命周期.为了使其正常工作,必须使用适当的构造函数对其进行实例化,该构造函数采用强制参数.但是,为了序列化,我还必须添加一个公共默认构造函数.

该对象将由我们的API公开提供,第三方开发人员应该能够实例化和使用它.虽然有关于如何正确操作该对象的适当文档,但不能保证有人会试图使用不正确的构造函数 - 然后就会遇到麻烦.

我正在寻找一种巧妙的方法来应用一些指导,而第三方开发人员正在编写他们的代码.该Obsolete属性出现在我的脑海中 - 我可以使用适当的注释作为消息来注释序列化构造函数.然后,该消息将出现在输出警告中,并将开发人员指向正确的代码行.此外,Visual Studio和使用的任何代码检查附加组件都会适当地突出显示构造函数的用法.

在这种方法中困扰我的是,Obsolete属性的目的是完全不同的.它的语义是装饰项目已弃用,可能会在其他版本中删除.在序列化构造函数场景中,这是错误的,并且此属性的用法和含义之间存在差异.更不用说在某些开发部门可能启用的"将警告视为错误"选项......

所以,问题是 - 对于这种属性的使用,这是一种可接受的做法吗?是否有任何其他合法和通用的方法来实现相同的效果(通过我的意思是不依赖于第三方代码检查附加组件等 - 我不控制谁使用代码和他们的设置是什么)?


关于下面答案中的注释(对我来说仍然有用),我必须澄清我在可继承类上使用受保护的默认构造函数.构造函数用于支持XML序列化,但不应用于在业务逻辑中初始化类.继承类应该调用一些其他的基础构造函数,编写继承类的开发人员需要知道这一点.但是,如果需要,从此代码派生的开发人员还必须能够为其继承的类启用XML序列化.

.net obsolete code-inspection

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

Java和string.hashCode()在群集中的计算机之间的稳定性

我也问过类似的问题string.GetHashCode()在.NET方法.从那时起,我了解到如果我们要在不同的机器上使用它,我们就不能依赖于buit-in类型的哈希代码的隐式实现.因此,我假设Java实现String.hashCode()在不同的硬件配置中也不稳定,并且可能在VM之间表现不同(不要忘记不同的VM实现)

目前,我们正在讨论一种通过散列将字符串安全地转换为Java中的数字的方法,但是散列算法必须在群集的不同节点之间保持稳定,并且要快速评估,因为使用频率很高.我的队友坚持使用原生hashCode方法,我需要一些合理的论据让他们重新考虑另一种方法.目前,我能想到的唯一的机器配置之间(x86和x64)的JVM可能不同的厂商对某些机器(几乎适用于我们的情况下)和字节顺序不同的差异,根据不同的算法是在机器上跑.当然,也可以考虑字符编码.

虽然所有这些事情都浮现在我脑海中,但我并不是百分之百肯定他们中的任何一个都有足够的理由,我很感激你在这方面的专业知识和经验.这将有助于我建立更强大的论据,以支持编写自定义哈希算法.另外,我很欣赏有关实施时不应该做的建议.

java hashcode cluster-computing

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

NuGet - 如何在MonoDevelop/Xamarin Studio上配置包恢复

阅读使用的NuGet不承诺包到源代码控制,我明白我应该添加.nuget文件夹到我的项目,以使构建过程中包恢复...和阅读准备的NuGet一个混帐回购协议我已经明白我可以删除NuGet.exe,并NuGet.config和让IDE通过设置自动下载它们DownloadNuGetExetrueNuGet.targets.

好吧,我有点困惑,因为1)Xamarin Studio既不下载NuGet.exe也不下载NuGet.config... 2).nuget文件夹根本不需要,因为人们可以在解决方案资源管理器上发出命令Restore NuGet Packages并且无论如何都要恢复包.

话虽如此,在Xamarin Studio/MonoDevelop上配置包恢复的正确方法是什么?

monodevelop nuget xamarin-studio

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

为什么std :: thread没有try_join_for()和interrupt()方法

谁能解释我为什么与以下内容std::thread不同boost::thread

  1. 它没有try_join_for/ try_join_until方法
  2. 没有interrupt办法

https://isocpp.org/wiki/faq/cpp11-library-concurrency提供了一些解释:

无法请求线程终止(即请求它尽快并尽可能优雅地退出)或强制线程终止(即杀死它)。我们剩下的选择

  1. 设计我们自己的协作式“中断机制”(具有一个共享数据,调用者线程可以设置该共享数据以供被调用线程检查,并在设置该线程时快速而优美地退出),
  2. 通过使用thread :: native_handle()获得对操作系统的线程概念的访问权,从而实现“本地化”
  3. 终止进程(std::quick_exit()),
  4. 终止程序(std::terminate())。这是委员会可以同意的所有事情。特别是,POSIX的代表强烈反对任何形式的“线程取消”,但是C ++的许多资源模型都依赖于析构函数。对于每个系统和每个可能的应用程序,没有完美的解决方案。

但是也许还有更完整的解释?此类方法(try_joininterrupt)有时非常有用。

concurrency c++-standard-library c++11

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

Freemarker与Java 8的问题

我最近将我的项目更新为Java 8,在尝试让我的项目再次工作时我遇到了一些问题.现在,问题看起来像Java 8 Introspection API与我的freemarker配置有冲突,每次我尝试运行服务器时都会收到此错误.

无法获取类[freemarker.template.Configuration]的BeanInfo; 嵌套异常是java.beans.IntrospectionException:读取和写入方法之间的类型不匹配

我的freemarker版本是

    <dependency>
        <groupId>org.freemarker</groupId>
        <artifactId>freemarker</artifactId>
        <version>2.3.20</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

我的Spring版本是3.2.5,我没有升级到版本4.x,在那里我读到了类似的问题.有什么建议吗?

这里是stactrace

java.beans.IntrospectionException: type mismatch between read and write methods
at org.springframework.beans.PropertyDescriptorUtils.findPropertyType(ExtendedBeanInfo.java:512)
at org.springframework.beans.SimplePropertyDescriptor.<init>(ExtendedBeanInfo.java:257)
at org.springframework.beans.SimplePropertyDescriptor.<init>(ExtendedBeanInfo.java:249)
at org.springframework.beans.ExtendedBeanInfo.<init>(ExtendedBeanInfo.java:97)
at org.springframework.beans.ExtendedBeanInfoFactory.getBeanInfo(ExtendedBeanInfoFactory.java:44)
at org.springframework.beans.CachedIntrospectionResults.<init>(CachedIntrospectionResults.java:233)
at org.springframework.beans.CachedIntrospectionResults.forClass(CachedIntrospectionResults.java:149)
at org.springframework.beans.BeanWrapperImpl.getCachedIntrospectionResults(BeanWrapperImpl.java:321)
at org.springframework.beans.BeanWrapperImpl.getPropertyDescriptors(BeanWrapperImpl.java:328)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.filterPropertyDescriptorsForDependencyCheck(AbstractAutowireCapableBeanFactory.java:1303)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.filterPropertyDescriptorsForDependencyCheck(AbstractAutowireCapableBeanFactory.java:1283)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1141)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:912)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:855)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:770)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:489)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:286)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1146)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296)
at …
Run Code Online (Sandbox Code Playgroud)

java spring freemarker spring-mvc java-8

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

GWT + HTML5轻量级移动库,支持动画

我正在研究用GWT编写移动应用程序,我需要一个轻量级的移动库.

该应用程序将包含动画和移动外观.有没有办法在HTML 5之上使用GWT创建更像"动画"(如模糊,动作效果)的"游戏"?

我找到了以下库,但我不确定哪个是最好的库.

http://code.google.com/p/mgwt/

http://code.google.com/p/gwtmobile/

http://code.google.com/p/gwt-phonegap/

http://mobilegwt.appspot.com/showcase/

https://play.google.com/store/apps/details?id=com.gwtmobile.phonegap&hl=en

https://github.com/dennisjzh/GwtMobile

http://www.gwt4touch.appspot.com/

您能否向我提供图书馆读者的任何建议,优点和缺点,或者您可能使用过的任何建议,优点和缺点?

mobile gwt html5 mgwt

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

修改内置.NET集合int.MaxValue次数和更多 - 潜在的溢出错误

回到过去,.NET Reflector是免费的,我用它来填充.NET框架代码.我注意到.NET 2.0中的大多数集合(我相信这也适用于当前版本)使用以下机制来识别循环期间的集合修改:

public class SomeCollection<T>
{
    internal int version = 0;

    // code skipped for brevity

    public void Add(T item)
    {
        version++;

        // add item logic ...
    }

    public IEnumerator<T> GetEnumerator()
    {
         return new SomeCollectionEnumerator<T>(this);
    }
}

public class SomeCollectionEnumerator<T> : IEnumerator<T>
{
     private SomeCollection<T> collection;
     private int version;

     public SomeCollectionEnumerator(SomeCollection<T> collection)
     {
         this.version = collection.version;
         this.collection = collection;
     }

     public bool MoveNext()
     {
         if (this.version != this.collection.version)
         {
             // collection was modified while iterated over
             throw SomeException(...);
         } …
Run Code Online (Sandbox Code Playgroud)

.net c# iteration reliability

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