我有一个基类DomainObject用于我在NHibernate中使用的所有业务对象.它包含该Id属性.
public abstract class DomainObject
{
public virtual int Id { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
我想写一个IEqualityComparer比较我的域对象.如果两个对象具有相同Id且对象类型相同,则它们应该相等.但是当我GetType()用来获取对象的类型时,它将返回NHibernate代理类型.所以这段代码:
bool IEqualityComparer.Equals(object x, object y)
{
// null checking code skipped here
if(x is DomainObject && y is DomainObject)
{
return ((DomainObject) x).Id == ((DomainObject) y).Id
&& x.GetType() == y.GetType();
}
return x.Equals(y);
}
Run Code Online (Sandbox Code Playgroud)
不能正常工作,因为类型x is Asset而且类型y is AssetProxy21879bba3e9e47edbbdc2a546445c657.
那么,如何在可能是NHibernate代理对象的对象上获取实体类型?即在上面的例子Asset而不是AssetProxy21879bba3e9e47edbbdc2a546445c657?
我正在使用ReportLab使用python动态生成pdf.
我想在页面上居中一行文字.这是我目前的具体代码,但不知道如何水平居中文本.
header = p.beginText(190, 740)
header.textOut("Title of Page Here")
# I know i can use TextLine etc in place of textOut
p.drawText(header)
Run Code Online (Sandbox Code Playgroud)
文本显示,我可以手动移动左侧位置,使文本看起来居中,但我需要以编程方式居中,因为文本将是动态的,我不知道将有多少文本.
我正在尝试将我的ip子网地址(192.168.1.xxx)放入我的python代码中.我正在运行linux/osx.我该怎么做/最好的方法是什么?
有没有人知道是否有Visual Studio(任何版本)的扩展或插件会识别Perl语法高亮?我想在我的vs项目中编辑Perl文件,但有时候很难阅读.谢谢.
我一直在寻找一个免费的(如"免费啤酒")库,可以解析C#3.0代码(实际上,C#2.0与lambdas会这样做)并为个人项目返回某种AST /代码DOM.但是,到目前为止我看到的大多数替代方案都不充分:
Microsoft.CSharp.CSharpCodeProvider.Parse抛出一个NotImpementedException;所以...那里有一个免费的,有效的C#3.0解析器,可以插入另一个项目吗?
我有一个应用程序,同时是标准动作android.intent.action.SET_WALLPAPER的广播发送者和接收者.我只想在另一个应用程序广播此意图的情况下做一些事情.
有没有办法确定谁在BroadcastReceiver的onReceive方法中发起广播?
public function add($ child){return $ this-> children [] = $ child; }
顺便说一句,这是Dagfinn Reiersol的PHP in Action的摘录.根据这本书,这会返回$ child,但是如果成功分配则不应该返回true,否则返回false?
提前致谢
我正在创建一个应用程序,允许Activities从a TabActivity(最多~25)启动许多不同的应用程序.大多数活动都需要来自sqlite数据库的数据,因此在onCreate运行时,AsyncTask会创建一个SQLiteOpenHelper对象(它将打开一个可读/可写的数据库),运行查询,检索数据,然后关闭所有内容.
我只是在考验插科打诨,看看我能打破一些东西,所以我说每Activity到TabActivity's TabHost.然后我开始尽快将每个标签混合.
我注意到很快我就开始在LogCat中看到了:Caused by: android.database.sqlite.SQLiteException: database is locked: BEGIN EXCLUSIVE;应用程序继续死亡.
通常情况下,只有大约4-6个标签(我可以只限制用户)TabHost.我无法通过少量标签来破坏任何东西,但我仍然担心我可能会以糟糕的方式访问数据库.
如何防止我的SQLiteDatabase对象导致锁定?
如果我创建一个ContentProvider遗嘱,消除数据库锁定的可能性?
您是否有任何关于我可以为从中访问数据所做的更改的建议SQLiteDatabase?
我最终采用了使用Application该类并存储1 的方法,SQLiteOpenHelper并尽力使其保持同步.这似乎工作得很好 - 我把我所有的25个活动都放进TabHost去并且没有任何错误.
我在我的((SQLiteDbApplication)getApplication()).setDbHelper(new DBHelper(this, Constants.DB_NAME, null, Constants.DB_VERSION_CODE));每个onCreate()活动中都在调用方法(如下所示)
对此方法或使用此类所做的更改的任何进一步建议Application?
import android.app.Application;
import android.database.sqlite.SQLiteDatabase;
public class SQLiteDbApplication extends Application {
private DBHelper dbHelper;
private SQLiteDatabase db;
public synchronized DBHelper getDbHelper() {
db = …Run Code Online (Sandbox Code Playgroud) 我已经尝试了几个小时来弄清楚为什么在将它添加到地图的ovelays之前我不能使用Itemized Map叠加而不这样做:
GeoPoint point;
OverlayItem overlayitem = new OverlayItem(point, "","");
MarkerOverlay.addOverlay(overlayitem);
如果我尝试在没有MarkerOverlay.addOverlay(overlayitem);命令的情况下执行此操作,那么当我尝试添加新的overLay时,如下所示:
public boolean onTap(GeoPoint point, MapView mapView)
{
if (mOverlays.size() > 0)
mOverlays.remove(0);
OverlayItem overlayitem = new OverlayItem(point, "", "");
mOverlays.add(overlay);
populate();
return true;
}
Run Code Online (Sandbox Code Playgroud)
在我的ItemizedOverlay类中,然后我得到一个空的引用exeption(我不知道何时或为什么 - 它说它在调试时没有可用的源代码)
有任何想法吗?
编辑:这是我在logcat中可以找到的:
09-20 22:36:22.164: WARN/dalvikvm(311): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
Run Code Online (Sandbox Code Playgroud)
这就是我认为臭名昭着的例外:
09-20 22:36:22.293: ERROR/AndroidRuntime(311): java.lang.NullPointerException
09-20 22:36:22.293: ERROR/AndroidRuntime(311): at com.google.android.maps.ItemizedOverlay.getItemsAtLocation(ItemizedOverlay.java:617)
09-20 22:36:22.293: ERROR/AndroidRuntime(311): at com.google.android.maps.ItemizedOverlay.getItemAtLocation(ItemizedOverlay.java:586)
09-20 22:36:22.293: ERROR/AndroidRuntime(311): at com.google.android.maps.ItemizedOverlay.handleMotionEvent(ItemizedOverlay.java:498)
09-20 22:36:22.293: ERROR/AndroidRuntime(311): at com.google.android.maps.ItemizedOverlay.onTouchEvent(ItemizedOverlay.java:572)
09-20 22:36:22.293: …Run Code Online (Sandbox Code Playgroud) 我有一套积分.这组点确定了一个(非凸)多边形,但它没有排序.
由于它没有订购,我不能只是从点到点绘制它的边界.如何以一种我可以遍历此点列表并绘制多边形的方式对其进行排序?
我的第一个想法是使用凸壳,但我的多边形大多数时候是凹的.