就是那个问题?那么在开发ac#项目时不使用这个约定有多大的罪过?此约定广泛用于.NET类库中.但是,至少我不是一个粉丝,不仅仅是出于理由,而且我认为它没有任何贡献.例如IPSec是PSec的接口吗?是IIOPConnection IOPConnection的接口,我通常去定义找出来.
Java类库已经存在多年没有这个了,我觉得如果没有它我就一直在努力阅读代码.此外,界面应该不是最原始的描述?我的意思是IList <T>作为c#中List <T>的接口,是不是更好的有List <T>和LinkedList <T>或ArrayList <T>甚至CopyOnWriteArrayList <T>?这些类描述了实现?我想我在这里得到的信息比我在c#中的List <T>中得到的更多.
我想避免在我正在开发的开源项目中反思.在这里,我有类似以下的课程.
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?
任何帮助将不胜感激.
我在subversion中有一个标记,过去已经有一段时间了.我想知道它是从哪个分支创建的.有没有办法做到这一点.我试过了
svn log --stop-on-copy
Run Code Online (Sandbox Code Playgroud)
但这只给出了修订号,而不是分支路径.我需要分支路径,所以我可以检查出来.这里可以理解任何想法,最好是SVN命令行方法.
我有以下课程
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也同样好.
在下面的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) 如何使用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#注释看起来我不能注释参数.这可能吗?
我想比较Android的一些XML绑定工具,但似乎没有很多可用的.任何这些都是麻烦或非常有限的能力.Android平台可以使用除Simple XML框架之外的其他框架.
在这里,我对完成所有繁重工作的框架感兴趣,因此KXML,DOM和SAX并不是我真正想要的.像JiBX和JAXB这样的框架更符合我的要求.
我最近开发了一个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背景,我正在从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#中是否可能?
我有以下抽象类,不能更改.
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?