小编ng.*_*ng.的帖子

为接口使用"I"前缀或不使用

就是那个问题?那么在开发ac#项目时不使用这个约定有多大的罪过?此约定广泛用于.NET类库中.但是,至少我不是一个粉丝,不仅仅是出于理由,而且我认为它没有任何贡献.例如IPSec是PSec的接口吗?是IIOPConnection IOPConnection的接口,我通常去定义找出来.

  • 所以不会使用这种惯例导致混淆?
  • 有没有删除此约定的c#项目或库?
  • 做任何混合约定的c#项目,不幸的是Apache Wicket呢?

Java类库已经存在多年没有这个了,我觉得如果没有它我就一直在努力阅读代码.此外,界面应该不是最原始的描述?我的意思是IList <T>作为c#中List <T>的接口,是不是更好的有List <T>和LinkedList <T>或ArrayList <T>甚至CopyOnWriteArrayList <T>?这些类描述了实现?我想我在这里得到的信息比我在c#中的List <T>中得到的更多.

c# java

31
推荐指数
6
解决办法
6503
查看次数

使用ASM或Javassist改进字段获取和设置性能

我想避免在我正在开发的开源项目中反思.在这里,我有类似以下的课程.

public class PurchaseOrder {

   @Property
   private Customer customer;

   @Property
   private String name;
}
Run Code Online (Sandbox Code Playgroud)

我扫描@Property注释以确定我可以设置和反射性地从PurchaseOrder获取.有许多这样的类都使用java.lang.reflect.Field.get()java.lang.reflect.Field.set().

理想情况下,我想为每个属性生成如下调用者.

public interface PropertyAccessor<S, V> {
   public void set(S source, V value);
   public V get(S source);
}
Run Code Online (Sandbox Code Playgroud)

现在,当我扫描类时,我可以创建一个PurchaseOrder类似的静态内部类.

static class customer_Field implements PropertyAccessor<PurchaseOrder, Customer> {
   public void set(PurchaseOrder order, Customer customer) {
      order.customer = customer;
   }  
   public Customer get(PurchaseOrder order) {
      return order.customer;
   }
}
Run Code Online (Sandbox Code Playgroud)

有了这些,我完全避免了反思的代价.我现在可以使用原生性能设置并从我的实例中获取.任何人都可以告诉我如何做到这一点.代码示例会很棒.我在网上搜索了一个很好的例子但是却找不到这样的东西.ASM和Javasist的例子也很差.

这里的关键是我有一个可以传递的界面.所以我可以有各种各样的实现,也许有一个用Java反射作为默认,一个用ASM,一个用Javassist?

任何帮助将不胜感激.

java assembly java-bytecode-asm

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

如何查找标记的源分支

我在subversion中有一个标记,过去已经有一段时间了.我想知道它是从哪个分支创建的.有没有办法做到这一点.我试过了

svn log --stop-on-copy
Run Code Online (Sandbox Code Playgroud)

但这只给出了修订号,而不是分支路径.我需要分支路径,所以我可以检查出来.这里可以理解任何想法,最好是SVN命令行方法.

svn

13
推荐指数
2
解决办法
6487
查看次数

动态地向现有类添加注释

我有以下课程

public class Person {
   ...
}
Run Code Online (Sandbox Code Playgroud)

我想创建另一个看起来像这样的类.

@SomeAnnotation
public class Person {
   ...
}
Run Code Online (Sandbox Code Playgroud)

通过这样一个简单的方法.

public static Class addAnnotation(Class originalType, Class<? extends Annotation> annotation) {
   // what goes here?
}
Run Code Online (Sandbox Code Playgroud)

例如,通过ASM有一种简单的方法吗?我需要什么依赖项.我试过谷歌这个,但我发现的例子要么不完整,要么正在做其他事情.其他框架如javassist也同样好.

java

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

XML命名空间默认/继承

在下面的XML片段中,a,c,d和e的命名空间是什么?请参阅文档或规范.

<a xmlns="http://domain/a">
    <pre:b xmlns:pre="http://domain/b">
        <c/>
        <d xmlns="">
            <e/>
        </d>
    </pre:b>
</a>
Run Code Online (Sandbox Code Playgroud)

此外,什么Java框架尊重官方名称空间默认?我已经删除了org.w2c.*DOM包,但它似乎没有正确解析名称空间URI?例如,具有类似功能的东西.

String namespace = DocumentParser.parse().
                    getElement("a").
                    getElement("b").
                    getElement("c").
                    getNamespaceURI();
Run Code Online (Sandbox Code Playgroud)

java xml

6
推荐指数
3
解决办法
3531
查看次数

c#中的参数属性

如何使用c#属性执行以下操作.下面是一段Java,用于在构造函数中注释参数.

public class Factory {
    private final String name;
    private final String value;
    public Factory(@Inject("name") String name, @Inject("value") String value) {
        this.name = name;
        this.value = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

从查看c#注释看起来我不能注释参数.这可能吗?

c# java annotations

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

适用于Android的XML绑定工具

我想比较Android的一些XML绑定工具,但似乎没有很多可用的.任何这些都是麻烦或非常有限的能力.Android平台可以使用除Simple XML框架之外的其他框架.

在这里,我对完成所有繁重工作的框架感兴趣,因此KXML,DOM和SAX并不是我真正想要的.像JiBX和JAXB这样的框架更符合我的要求.

java xml android xml-serialization

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

如何加载eclipse插件

我最近开发了一个Eclipse插件,但插件似乎没有在Eclipse(3.4.2)中加载.如果我去

Help > About Eclipse Platform > Configuration Details
Run Code Online (Sandbox Code Playgroud)

我看到插入的插件

file:/C:/Program Files/eclipse/ganymede/plugins/de.vogella.plugin.htmlconverter_1.0.0.jar
Run Code Online (Sandbox Code Playgroud)

但它似乎不起作用.我知道插件已经正确实现,好像我右键单击项目(de.vogella.plugin.htmlconverter)并选择Run Eclipse Application然后启动一个新的Eclipse并且已经实现的弹出菜单工作.那么,当我从Eclipse导出项目并将其放在plugins目录中时,为什么它不起作用.

我在Windows XP和Mac OS X上都试过这个无用,如果我检查JAR,我会看到所有必需的工件.

META-INF/
META-INF/MANIFEST.MF
de/
de/vogella/
de/vogella/plugin/
de/vogella/plugin/htmlconverter/
de/vogella/plugin/htmlconverter/handler/
src/
src/de/
src/de/vogella/
src/de/vogella/plugin/
src/de/vogella/plugin/htmlconverter/
src/de/vogella/plugin/htmlconverter/handler/
de/vogella/plugin/htmlconverter/Activator.class
de/vogella/plugin/htmlconverter/handler/Convert.class
plugin.xml
Run Code Online (Sandbox Code Playgroud)

MANIFEST.MF也是这样的

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Htmlconverter Plug-in
Bundle-SymbolicName: de.vogella.plugin.htmlconverter;singleton:=true
Bundle-Version: 1.0.0
Bundle-Activator: de.vogella.plugin.htmlconverter.Activator
Require-Bundle: org.eclipse.ui,org.eclipse.core.runtime,org.eclipse.co
 re.resources;bundle-version="3.4.0",org.eclipse.jdt.core;bundle-versi
 on="3.4.0"
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Import-Package: org.osgi.framework;version="1.3.0"
Export-Package: de.vogella.plugin.htmlconverter;uses:="org.osgi.framew
 ork,org.eclipse.ui.plugin",de.vogella.plugin.htmlconverter.handler;us
 es:="org.eclipse.core.commands,org.eclipse.core.resources,org.eclipse
 .core.runtime"
Run Code Online (Sandbox Code Playgroud)

我试过懒惰激活和急切激活,但仍然没有.真正令人困惑的是,当我调试并启动一个单独的Eclipse应用程序时,它可以工作.我有什么不妥的想法.
是否有其他Eclipse插件可以执行某种形式的诊断并告诉我出了什么问题.

最后一点,如果我查看Eclipse错误日志,我看到没有错误.但是,如果我编辑MANIFEST.MF并放入一些垃圾字符串,它会报告并验证错误,MANIFEST.MF所以我知道Eclipse看到插件

有人可以帮忙吗?

java eclipse

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

从方法泛型中推断类型

我来自Java背景,我正在从c#中的等价物中寻找以下内容.

public interface Reader {
   <T> T read(Class<? extends T> type);
}
Run Code Online (Sandbox Code Playgroud)

这样我可以执行以下操作,约束参数并推断返回类型.

Cat cat = reader.read(Cat.class);
Dog dog = reader.read(Dog.class);
Run Code Online (Sandbox Code Playgroud)

我希望这样的东西可以在c#中运行,但我不确定它会不会.

public interface Reader {
   T Read<T>();
}
Run Code Online (Sandbox Code Playgroud)

而且这样做.

public class TypeReader : Reader {
   public T Read<T>() {
      Type type = T.GetType();
      ...
   }
}
Run Code Online (Sandbox Code Playgroud)

这样的事情在c#中是否可能?

c# java generics

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

动态覆盖c#中的抽象方法

我有以下抽象类,不能更改.

public abstract class AbstractThing {
   public String GetDescription() {
      return "This is " + GetName();
   }
   public abstract String GetName();
}
Run Code Online (Sandbox Code Playgroud)

现在我想从中实现一些新的动态类型.

AssemblyName assemblyName = new AssemblyName();
assemblyName.Name = "My.TempAssembly";
AssemblyBuilder assemblyBuilder = Thread.GetDomain().DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run);
ModuleBuilder moduleBuilder =  assemblyBuilder.DefineDynamicModule("DynamicThings");
TypeBuilder typeBuilder = moduleBuilder.DefineType(someName + "_Thing", 
                TypeAttributes.Public | 
                TypeAttributes.Class, 
                 typeof(AbstractThing));
MethodBuilder methodBuilder = typeBuilder.DefineMethod("GetName",    
                MethodAttributes.Public | 
                MethodAttributes.ReuseSlot |
                MethodAttributes.Virtual | 
                MethodAttributes.HideBySig,
                null,
                Type.EmptyTypes);

ILGenerator msil = methodBuilder.GetILGenerator();

msil.EmitWriteLine(selectionList);
msil.Emit(OpCodes.Ret);
Run Code Online (Sandbox Code Playgroud)

但是当我尝试实例化via时

typeBuilder.CreateType();
Run Code Online (Sandbox Code Playgroud)

我得到一个例外,说GetName没有实现.我在这里做错了吗?我看不出问题.

另外,通过名称实例化这样一个类的限制是什么?例如,如果我尝试通过"My.TempAssembly.x_Thing"实例化它是否可用于实例化而不生成Type?

c#

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