我有以下代码......
int Val=-32768;
String Hex=Integer.toHexString(Val);
Run Code Online (Sandbox Code Playgroud)
这相当于 ffff8000
int FirstAttempt=Integer.parseInt(Hex,16); // Error "Invalid Int"
int SecondAttempt=Integer.decode("0x"+Hex); // Error "Invalid Int"
Run Code Online (Sandbox Code Playgroud)
因此,最初,它将值-32768转换为十六进制字符串ffff8000,但是它不能将十六进制字符串转换回整数.
在.Net它的工作,我期待,和returns -32768.
我知道我可以编写自己的小方法来自行转换,但我只是想知道我是否遗漏了某些东西,或者这是否真的是一个错误?
我有一个有大约200多个方法的类,这些方法中的每一个都调用数据库或网络资源.
理想情况下,我想将每个调用包装在try/catch中,以捕获任何常见的网络或SQL异常,并让用户有机会再次尝试(如果适用).但是,将此代码添加到每个调用将非常耗时,并且就代码而言是膨胀的.
我已经考虑过在另一个方法中包装每个方法调用,创建一个委托,并将委托代码包装在try/catch中......就像这样......
(忽略语法......这只是一个概念性的例子)
bool CallUpdatePassenger(int PassengerId,string PassengerName,string PhoneNumber)
{
Delegate del= Delegate.CreateDelegate(typeof(UpdatePassengerDelegate), typeof(IPassengerServices).GetMethod("RemoteUpdatePassenger"));
bool Res=(bool)CallDelegate(del,PassengerName,PhoneNumber);
}
object CallDelegate(Delegate del,params object[] args)
{
object Result=null;
try
{
Result=del.DynamicInvoke(args);
}
catch (Some.Timeout.Error.Or.Whatever te)
{
// take some action.. maybe retry etc..
}
return Result;
}
Run Code Online (Sandbox Code Playgroud)
也许还有更实用的方法吗?
代码是自动生成的(通过我编写的工具)我可以很容易地包含上面的内容,但我想避免为每个方法调用编写上面的代码.
此外,如果我执行上述操作,我可以计时方法,并记录方法调用等.它看起来有点笨拙(而不是强类型).
谢谢Rich.
我有三星Galaxy Tab 2.0(7")
在此设备的背面是格式的序列号
RF3C6000MNA
当我进入设备的设置,然后选择关于设备 - >状态 - >序列号时,也会出现此编号.
但是,我不能找到一种以编程方式提取此数字的方法.
我已经看过很多关于提取序列号的文章,但这会返回一个完全不同的数字.(使用android.os.Build.SERIAL)
我已经提取了IMEI和MAC地址,所以我不需要代码.
我昨晚将三星Galaxy Tab 2升级到Android 4.2.2,并且发现了一些奇怪的错误,LogCat其中没有出现在我'升级'之前.
我希望它突出显示我的应用程序中隐藏的错误或内存泄漏,但我找不到任何东西.
它似乎只发生在我正在进行的活动中Spinner,并且Spinner已经扩展.
错误如下.
Activity uk.co.xxxx.xxxx has leaked IntentReceiver com.immersion.android.haptics.HapticFeedbackManager$HapticFeedbackBroadcastReceiver@41e4bac0 that was originally registered here. Are you missing a call to unregisterReceiver()?
有没有人见过这个?您是否认为可以忽略它,因为它只发生在我的某个设备上?
---编辑---
而且,顺便说一句,我没有在任何地方注册任何接收器,所以没有什么可以取消注册.
我有以下代码
public static byte[] Compress(byte[] CompressMe)
{
using (MemoryStream ms = new MemoryStream())
{
using (GZipStream gz = new GZipStream(ms, CompressionMode.Compress,true))
{
gz.Write(CompressMe, 0, CompressMe.Length);
ms.Position = 0;
byte[] Result = new byte[ms.Length];
ms.Read(Result, 0, (int)ms.Length);
return Result;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但是当我对它运行代码分析时,它会出现以下消息
CA2202 : Microsoft.Usage : Object 'ms' can be disposed more than once in
method 'Compression.Compress(byte[])'. To avoid generating a
System.ObjectDisposedException you should not call Dispose more than one
time on an object.
Run Code Online (Sandbox Code Playgroud)
就我而言,当GZipStream为Disposed时,由于构造函数的最后一个参数(leaveOpen = true),它会使底层Stream(ms)保持打开状态.
如果我稍微改变我的代码..删除MemoryStream周围的'using'块并将'leaveOpen'参数更改为false.
public static …Run Code Online (Sandbox Code Playgroud) 由于硬盘驱动器故障,我最近不得不重新安装Windows ..幸运的是,我将所有源文件都放在另一个磁盘上.
在我之前的安装中,我使用的是Tortoise SVN,我刚刚在我的新机器上重新安装(几个月后).
如何将当前源文件重新链接到SVN存储库?
我担心如果我点击错误的东西,它会用服务器上的内容更新我的本地副本.
谢谢Rich.
我有一个非常简单的UserControl,它只包含一个Border元素中包含的TextBlock.
有没有办法从包含窗口将样式应用于UserControl中的TextBlock.
我知道我可以用...创建一个风格
<Style TargetType='TextBlock'>
Run Code Online (Sandbox Code Playgroud)
但这适用于我窗口中的所有TextBlocks,而不仅仅是我的UserControl中的TextBlocks
所以我希望能够说出类似......
<Style TargetType='MyUserControl.TextBlock'>
Run Code Online (Sandbox Code Playgroud)
谢谢,
丰富.
PS.这是我正在尝试做的简化示例!
当我今天晚上开车回家的时候,我的脑子里响起了,我想到了一个可能的解决方案......那就是创建一个TextBlock控件的基本子类,并将其命名为MyTextBlock ..所以只需要一个定义喜欢
public class MyTextBlock : TextBlock { }
Run Code Online (Sandbox Code Playgroud)
然后,在usercontrol中,使用"MyTextBlock"而不是"TextBlock".这将允许我将样式应用于"MyTextBlock"类型.答对了 !!!
也许这不是最简单的方法,但它的代码非常少,而且很有效.
但是,由于我对WPF还不熟悉,所以我对一种更为标准的实现方式感兴趣.
我有以下类,它扩展了ViewGroup类.
我表示我希望文本对齐'BOTTOM | RIGHT'如果Button在LinearLayout中,它可以正常工作,但在我的自定义派生中,它只考虑'RIGHT'参数.
我大大简化了课程,使其更容易阅读.
有什么明显的东西我不见了吗?
谢谢Rich
public class LayoutManager extends ViewGroup
{
private Button b1;
public LayoutManager(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
LocalInit(context);
}
public LayoutManager(Context context, AttributeSet attrs)
{
super(context, attrs);
LocalInit(context);
}
public LayoutManager(Context context)
{
super(context);
LocalInit(context);
}
private void LocalInit(Context context)
{
b1=new Button(context);
b1.setText("hello button 1");
b1.setGravity(Gravity.BOTTOM | Gravity.RIGHT);
super.addView(b1);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b)
{
b1.layout(100, 100, 300, 300);
} …Run Code Online (Sandbox Code Playgroud) 在Visual Studio中,有一项功能可以将自定义可视化工具添加到IDE.这允许您编写自己的对话框,在运行时显示复杂对象的内容(即,它可能需要一个Person记录并显示姓氏,姓氏和出生日期).
我在Eclipse/Java中找不到这个功能,但是想知道它是否会被称为不同的东西?
谢谢,Rich
java ×4
android ×3
c# ×3
.net ×2
delegates ×1
eclipse ×1
exception ×1
hex ×1
idisposable ×1
memory-leaks ×1
silverlight ×1
string ×1
styles ×1
svn ×1
tortoisesvn ×1
wpf ×1