我刚刚使用Google Guice for Dependency Injection,并开始将其集成到我现有的应用程序中.到现在为止还挺好.我有许多类,除了它们的依赖项,还需要Strings,DataSources等等.我知道有NamedBindings,但我真的不想为每个简单的字符串创建一个注释,我必须传递给每个类的构造函数.然后,有一个名为AssistedInject的东西,为我创建Factory实现.哇,但我还是要定义工厂的界面.这对于具有依赖关系的类是否可以,但是这个示例类呢:
public class FooBarClass {
public FooBarClass(String name, String anotherOne) {
// Some stuff
}
}
Run Code Online (Sandbox Code Playgroud)
在某些情况下,我怀疑如何使用Guice,或者更一般地说,DI是正确的方式."我经常听到:XYZ框架是新的." 但这暗示我必须使用DI框架创建每个实例.
如果我只需要这个类的一个实例怎么办?除了两个字符串之外,这个类绝对没有依赖性.想想一个Shutdown Hook,它只会被实例化一次并作为我的Shutdown Hook传递给JVM.我应该用Guice创建这个实例吗?这看起来非常愚蠢,因为没有什么可注入,但我必须编写工厂接口来传递Guide两个参数,并且必须为我的FooBarClass创建一个接口来使用DI.
同样的事情适用于我需要这个类的多个实例的情况.没有依赖关系,但我必须创建一堆样板代码才能从中获取任何东西.这对我来说似乎不对.
那么,我应该如何使用DI和/或Guice?
非常感谢!
捕获的std :: exception是否可以使what()为NULL?
检查e.what()是否低于开销?
//...
}
catch (const std::exception& e)
{
std::string error;
if(e.what())
error = e.what();
}
Run Code Online (Sandbox Code Playgroud) 我使用YuiCompressor压缩我自己的JS,但是有没有理由说明MicrosoftAjax.js没有缩小?或者是否有一些设置来说运行它的压缩版本(如果有压缩版本).或者我是否需要对其进行反编译并自行缩小脚本资源?
我使用SQL Server 2005中的row_number over()功能进行了一次昂贵的查询.在查询被分页时,我只返回这些记录的子列表.但是,我还想返回记录总数,而不仅仅是分页子集.有效地运行查询两次以获得计数是不可能的.
选择计数(*)也是不可能的,因为当我尝试这个时表现非常糟糕.
我真正喜欢的是@@ ROW_NUMBERROWCOUNT :-)
首先,我确实读过这个StackOverflow问题,所以不需要指向我.
我现在正在研究类似的问题.具体来说,我有一个带有审计表的数据库,用于存储有关数据库中其他表的审计信息.该表的基本形式是:
ID,EntityID,EntityTypeID,ActionTypeID,DateTime
现在,正如您可以猜到的,EntityID的通用特性意味着进出该表的外键关系很难管理,特别是通过ORM系统进入混合.
当然,grunt-work解决方案是手动执行所需的查询并使用ORM工作的东西,我很好.
但是,这个问题在我的脑海中确实提出了一个问题,即是否存在允许形式的外键关系的任何RDBMS:表:要定义的ID.
换句话说,在这样的RDBMS中,EntityTypeID列可能包含诸如的值
'TableA:1'和'TableB:somekey'
所以...
有没有RDBMS这样做?
在WinForms中,你有Control.BeginInvoke(),这意味着你可以编组从后台线程到创建控件句柄的主UI线程的调用.
这很好,但是如何(在C#中)你会在两个"标准"线程之间做到这一点?
我编写了一个服务总线,它有一个处理器线程来消费消息.我想要一个计时器来触发,这会导致处理器线程做某事,而不是在计时器的线程中运行的代码.
当然我可以使用线程同步(Monitor/ using() {...}),但想知道它是如何正常完成的.
好的,我正在为一个遗留的Excel-VBA应用程序完成一个附加项目,我再一次遇到了神秘范围的难题.Rows(?)和worksheet.Rows属性.
有谁知道这些属性真正做了什么以及它们应该为我提供什么?(注意:所有这些可能也适用于相应的*.Columns属性).
我真的希望能够使用它是返回一系列行,如下所示:
SET rng = wks.Rows(iStartRow, iEndRow)
Run Code Online (Sandbox Code Playgroud)
但是我从来没有能够做到这一点,即使Intellisense为它显示了两个参数.相反,我必须使用其他两种(非常kludgy)技术中的一种.
帮助是非常无益的(对于Office VBA通常如此),并且对于"Rows"的Google搜索并不是非常有用,无论我添加了多少其他术语.
我能够使用它的唯一的事情是1)返回单行作为范围(rng.Rows(i))和2)返回范围(rng.Rows.Count)中的行的计数.是吗?真的没有别的东西吗?
澄清:我知道它会返回一个范围,并且还有其他方法可以获得一系列行.我要求的具体是我们从.Cells()和.Range()得到的.Rows()得到了什么?我知道的两件事是1)返回单行范围的简单方法和2)计算范围内行数的方法.
还有别的事吗?
为什么以下代码抛出ArrayStoreException?
double[] a = {2.0,3.4,3.6,2.7,5.6};
int[] b = {2,3,4,5};
System.arraycopy(b,0,a,1,4);
Run Code Online (Sandbox Code Playgroud) 我有一些我想要想象的数据.源数据的每个字节大致对应于图像的像素值.
使用Python生成图像文件(位图?)的最简单方法是什么?
我想重用我编写的一些代码来为datagridview添加一些功能.我希望公开默认的datagridview属性和事件,因此我不想创建新的自定义组件.所以我尝试编写一个子类,工作正常.但我也想到我可以编写一个独立的实用程序类,它在构造函数中获取datagridview并以相同的方式设置它.例如
public class
MyGrid
{
private DataGridView m_dg;
public MyGrid(DataGridView dg)
{
m_dg = dg;
m_dg.RowHeadersVisible = false;
m_dg.SortCompare += new DataGridViewSortCompareEventHandler(m_dg_SortCompare);
}
void m_dg_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
{
// do custom sorting here
}
}
Run Code Online (Sandbox Code Playgroud)
所以在我的应用程序启动的某个地方,我会打电话
MyGrid g1 = new MyGrid(dataGridView1);
MyGrid g2 = new MyGrid(dataGridView2);
Run Code Online (Sandbox Code Playgroud)
等等.这种方法的任何缺点?看起来大部分代码都是一样的,不同之处在于如何实例化扩展网格(将子类控件拖放到表单中,拖动普通数据网格并调用上面的代码)
c# ×2
java ×2
asp.net-ajax ×1
c++ ×1
controls ×1
datagridview ×1
excel ×1
excel-vba ×1
exception ×1
foreign-keys ×1
guice ×1
image ×1
javascript ×1
minify ×1
orm ×1
python ×1
rdbms ×1
sql ×1
sql-server ×1
subclassing ×1
vba ×1