在Java世界中,我们使用Apache Commons的ToStringBuilder来帮助创建toString()实现.
有没有人知道C#的免费实现?有没有更好的替代品我不知道?
如果不存在任何自由实现,那么我想这个问题就变成了一个问题"在C#3中什么会成为一个好的ToStringBuilder?"
脱离我的头顶:
它可以提供反射和手动ToString字符串创建.
如果可以使用表达式树,真的很酷.
像这样的东西......
public override string ToString()
{
return new ToStringBuilder<Foo>(this)
.Append(t => t.Id)
.Append(t => t.Name)
.ToString();
}
Run Code Online (Sandbox Code Playgroud)
哪个会回归:
"Foo{Id: 1, Name: AName}"
Run Code Online (Sandbox Code Playgroud)
还有其他想法吗?
UPDATE
只是为了澄清ToStringBuilder是一个与StringBuilder不同的生物.我正在寻找类似于Apache Common的ToStringBuilder功能的东西,它具有多行格式化,不同样式和反射基础ToString创建等功能.谢谢.
更新2
我已经建立了自己的.看到这里.
我需要一个可以按其值的递减顺序迭代的Map .是否有像Apache Commons或Guava这样的标准库提供这种地图?
我有一个类似于这样的XML配置文件:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<config>
<mainServerHostname>MainServer</mainServerHostname>
<failoverServers>
<server>
<ipAddress>192.168.0.5</ipAddress>
<priority>1</priority>
</server>
<server>
<ipAddress>192.168.0.6</ipAddress>
<priority>2</priority>
</server>
</failoverServers>
</config>
Run Code Online (Sandbox Code Playgroud)
现在,我知道通过使用以下代码(在设置我的XMLConfiguration对象并调用它之后):
config.getList("failoverServers.server.ipAddress");
Run Code Online (Sandbox Code Playgroud)
我可以得到所有IP地址的列表.这很方便,但如果我可以做这样的事情会更方便:
config.getList("failoverServers.server");
Run Code Online (Sandbox Code Playgroud)
并获取一个对象列表,每个对象都有一个ipAddress和一个优先级.据我所知,没有办法做到这一点.有没有人对如何实现这种功能有任何想法?我甚至非常愿意定义与Java可以将数据映射到的XML结构相对应的数据结构,如果这会使事情变得更容易(事实上甚至可能更好).谢谢大家的帮助!
Apache的两个Maven工件中有四个重复的类:commons-beanutils:commons-beanutils:1.8.3和commons-collections:commons-collections:3.2.1:
org.apache.commons.collections.ArrayStack
org.apache.commons.collections.Buffer
org.apache.commons.collections.BufferUnderflowException
org.apache.commons.collections.FastHashMap
Run Code Online (Sandbox Code Playgroud)
是否可以用其他工件替换其中一个以避免这种重复?我试图谷歌但没有找到任何解决方案.相当恼人的问题.
我使用Apache Commons Fileupload工具进行标准文件上传.我的问题是,如果上传文件包含特殊字符(á,é,ú等),我无法获得正确的文件名.它们都被转换为?迹象.
request.getCharacterEncoding()表示UTF-8,但我在字符串fileItem.getName()中得到的字节对于我所有的特殊字符都是相同的.
你能帮我解决什么问题吗?
(一些细节:在Windows上使用Firefox 3.6.12,Weblogic 10.3)
这是我的代码片段:
public CommandMsg(HttpServletRequest request) {
Enumeration names = null;
if (isMultipart(request)) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List uploadedItems = upload.parseRequest(request);
Iterator i = uploadedItems.iterator();
FileItem fileItem = null;
while (i.hasNext()) {
fileItem = (FileItem) i.next();
if (fileItem.isFormField()) {
// System.out.println("isFormField");
setAttribute(fileItem.getFieldName(), fileItem.getString());
} else {
String enc = "utf-8";
enc = request.getCharacterEncoding();
String fileName = fileItem.getName();
byte[] fnb = fileItem.getName().getBytes();
byte[] fnb2 = null; …Run Code Online (Sandbox Code Playgroud) 我想从属性文件加载配置(apache commons配置).我的计划是:
PropertiesConfiguration pc = new PropertiesConfiguration("my.properties");
System.out.println(pc.getString("myValue"));
Run Code Online (Sandbox Code Playgroud)
在my.properties我有
myValue=value,
Run Code Online (Sandbox Code Playgroud)
用逗号
当我运行程序时,输出是value,而不是value, with comma.看起来值加载到,字符之前.
有任何想法吗?
所以我目前正在使用commons lang apache库.
当我尝试取消该字符串时:😀
返回相同的字符串:😀
String characters = "😀"
StringEscapeUtils.unescapeHtml(characters);
Run Code Online (Sandbox Code Playgroud)
输出: 😀
但是当我尝试使用少数几个字符来转义字符串时,它可以工作:
String characters = "㈳"
StringEscapeUtils.unescapeHtml(characters);
Run Code Online (Sandbox Code Playgroud)
输出:㈳
有任何想法吗?当我尝试"😀"在在线unescaping实用程序上取消此String 时,它可以工作,所以也许这是apache常见langs库中的一个错误?或者任何人都可以推荐其他图书
谢谢.
更新:
我现在能够成功地解除String的问题.现在的问题是当我试图逃脱那个unescape的结果时,它不会带回String(?).
我正在尝试使用prunsrv.exe为应用程序安装并启动服务
我能够安装该服务,但服务不会启动,并给我一个错误

以下是用于使用prunsrv.exe安装服务的配置
set SERVICE_NAME=TestService
REM Service log configuration
set PR_LOGPREFIX=%SERVICE_NAME%
set PR_LOGPATH=D:\setups\Commons_Daemon\commons-daemon-1.0.14-bin-windows\logs
set PR_STDOUTPUT=auto
set PR_STDERROR=auto
set PR_LOGLEVEL=INFO
REM Path to java installation
set PR_JVM=C:\Program Files\Java\jre1.6.0_04\bin\client\jvm.dll
set PR_CLASSPATH=D:\setups\Commons_Daemon\commons-daemon-1.0.14-bin-windows\temp.jar;
REM Startup configuration
set PR_STARTUP=auto
set PR_STARTMODE=java
set PR_STARTCLASS=Trys.AppLauncher
set PR_STARTMETHOD=start
REM Shutdown configuration
set PR_STOPMODE=java
set PR_STOPCLASS=Trys.AppLauncher
set PR_STOPMETHOD=stop
REM JVM configuration
set PR_JVMMS=64
set PR_JVMMX=128
set PR_JVMSS=4000
REM Install service
prunsrv.exe //IS//%SERVICE_NAME%
Run Code Online (Sandbox Code Playgroud)
将上述配置打包到批处理文件中以执行安装服务
此外,日志文件不会生成,因为我甚至无法调试.
请告诉我哪里出错了
IntelliJ显示在此示例代码中不推荐使用OptionBuilder来自http://commons.apache.org/proper/commons-cli/usage.html.
我应该用什么作为替代品?
import org.apache.commons.cli.*;
Options options = new Options();
options.addOption(OptionBuilder.withLongOpt( "block-size" )
.withDescription( "use SIZE-byte blocks" )
.hasArg()
.withArgName("SIZE")
.create());
Run Code Online (Sandbox Code Playgroud) 我有一个主要的conf文件,我使用apache通用配置类加载.我有一个要求,用户可以指定一个conf文件,这些文件中的值将覆盖main conf中的值.
请建议我们如何在apache通用配置类或任何其他开源类中实现这一点.
提前致谢
apache-commons ×10
java ×10
c# ×1
collections ×1
file-upload ×1
guava ×1
html ×1
map ×1
maven ×1
orm ×1
procrun ×1
reflection ×1
servlets ×1
tostring ×1
xml ×1