我正在尝试在编写应用程序时遇到的问题超出了(对我来说)很大的问题.请看这个(我会尽量缩短代码):
我有root接口叫IRepository<T>.接下来,IBookRepository : IRepository<Book>
Next,实现它的具体类:BookRepository : IBookRepository
在我声明的RepositoryManager类中 private IRepository<IRepoItem> currentRepo;
IRepoItem 是一个由Book类实现的接口.
现在,当我尝试做这样的事情时:
currentRepo = new BookRepository();
Run Code Online (Sandbox Code Playgroud)
VisualStudio提供错误消息:
无法将类型'BookRepository'隐式转换为'IRepository'.存在显式转换(您是否错过了演员?)
我尝试显式转换,但抛出运行时异常...
我知道(几乎可以肯定)它是一种叫做协方差的东西,这可能(可能)在.Net 4.0中解决了.不幸的是我正在使用框架版本3.5编写,我无法改变它.请给我一些建议怎么做 - 如何超支这个问题?我想从RepoFactory获得currentRepo,它会产生几种存储库,具体取决于用户的需求.我不知道这里是否允许链接,但我在http://olgatherer.wordpress.com/上写了一些博客,我在其中描述了应用程序的创建.我的英语不好,但我希望能够理解我.提前谢谢你的回答.
最好的问候,skrzeczowas
构建具有高度规范化的数据库的事务系统时,运行报告样式查询,甚至在UI上显示数据的查询都可能涉及多个联接,这在数据繁重的情况下可以并且通常会影响性能.加入很贵.
通常,所提供的指导是您永远不应该从事务性数据库模型中运行这些查询,而应该使用针对特定UI视图或报告而定制的非规范化展平模型,从而消除了对许多联接的需要.在这种情况下,数据复制不是问题.
这个概念很有意义,但是当专家发表这些陈述时我很少看到的是如何实现这一点.例如,(并且坦率地说,我很欣赏使用任何平台的示例)在sql server后端运行的中型系统中,您有一个规范化的事务模型.您还有一些报告和需要查询的网站.因此,您创建了一个"报告"数据库,可以平滑规范化数据.你如何保持同步?交易日志运送?如果是这样,您如何转换数据以适应报告模型?
有谁知道如何在CGridView列字段中显示条件值?
我在DB中输入了'F'的性别'M',在CGridView中,但我想分别显示'男'和'女',而不是M或F.
任何想法都会受到欢迎;-)
我正在使用这个Perl单行程序(在bash中)成功替换给定文件中的随机字符串:
perl -pi -e "s/replace\ this/`</dev/urandom tr -dc A-Za-z0-9 | head -c64`/g" example.php
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何用不同的随机字符串替换几个"替换" .
我有三个模型以多模型形式呈现.
class Parent < ActiveRecord::Base
has_many :children
accepts_nested_attributes_for :children
end
class Child < ActiveRecord::Base
belongs_to :parent
has_many :other_children
accepts_nested_attributes_for :other_children
end
class OtherChild < ActiveRecord::Base
belongs_to :child
end
= form_for @parent do |f|
# fields for parent
= f.fields_for :children, @parent.children do |cf|
= cf.fields_for :other_children, @parent.children do |ocf|
# fields_for other child
= cf.fields_for :other_children, @parent.children.new do |ocf|
# fields_for other child
Run Code Online (Sandbox Code Playgroud)
这有效,除非我通过jquery复制第二组子字段.更清楚的是,带有新的other_child模型的fields_for有一个创建按钮,可以触发一些jquery,例如$(new_child_form).clone().insertBefore($(new_child_form))允许在同一个表单提交中添加多个子模型.我知道我可以通过ajax单独提交每个子表单,但这不是我想要的.
Rails越来越多parent[children_attributes][0][other_children_attributes][1],似乎只使用最后一个.有任何想法吗?
我正在寻找一种函数来读取/写入ESRI的shapefile格式(在Arcview中使用)中的点,线和多边形,以便在Matlab中使用
我们在Sybase中有一个数据库,我们可以从Java服务器访问它.
使用,直接通过Sybase驱动程序访问数据库DriverManager.它工作正常,我们能够调用我们的存储过程.
最近,我们正在迁移到应用程序服务器(在JBoss 5上),现在通过JNDI连接器调用数据库,使用DataSource:
Properties ppt = new Properties();
ppt.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
ppt.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
ppt.put("java.naming.provider.url", "jdbc/sybase");
InitialContext ctx = new InitialContext(ppt);
DataSource ds = (DataSource) ctx.lookup(AConfig.getInstance().getDatasourceJndiName());
Connection conn = ds.getConnection();
Run Code Online (Sandbox Code Playgroud)
(使用JBoss示例中的基本设置配置DataSource )
但是,在此设置中,有几个过程失败,出现此错误:
"存储过程' ** '只能在非链接事务模式下运行."
或者这种情况,对于其他情况(失败的命令改变):
多语句事务中不允许TRUNCATE TABLE命令
从我在互联网上发现的东西来看,它看起来像是JBoss中的东西,或者连接器本身正在打开一个事务,导致这些错误.因此,我能找到的针对这些特定问题的各种解决方案过于局部化,而且似乎是一个更大的问题.
有没有办法防止这种行为(假设这是实际问题)?
我在这个特定领域的知识非常薄,这对我来说是新的.因此,此描述可能缺少重要的细节.请指出我如何改进这个问题,如有必要,我可以添加哪些细节.
我正在FilteredTextBoxWPF 中创建一个子类化包含的TextBox控件。该FilteredTextBox范围内必须只允许字符[a-zA-Z0-9_]来输入,我已经得到了部分相当多的工作。我已经开始OnPreviewTextInput处理键入的字符,OnPreviewDrop过滤拖放的字符,并且我添加了一个 PreviewExecutedHandler,只要在控件上执行命令来处理粘贴,它就会运行。
到现在为止还挺好。
棘手的部分是控件还应该在输入时用下划线替换空格。
我想出了一个解决方案,但感觉很糟糕,我不知道它缺少什么。我觉得必须有一种我不知道的更好的技术。我所做的:
internal class FilteredTextBox : TextBox
{
public FilteredTextBox()
{
CommandManager.AddPreviewExecutedHandler(this, this.HandlePreviewExecuteHandler);
}
private void HandlePreviewExecuteHandler(object sender, ExecutedRoutedEventArgs e)
{
var uiCmd = e.Command as RoutedUICommand;
if (uiCmd != null && (uiCmd.Text == "Space" || uiCmd.Text == "ShiftSpace"))
{
// We're manually handling spaces, so we need to make appropriate checks.
if (this.Text.Length == this.MaxLength) return;
if (this.SelectionLength == 0)
{
// If …Run Code Online (Sandbox Code Playgroud) 所以我有一个字符串"NEW".
什么是将该字符串转换为"新"的SIMPLEST方法.
基本上现在我这样做:
Case "NEW"
makes = connector.GetMakesByYear(_AuthorizationKey, "NewCar", CDate(Now), Year)
Case "USED"
makes = connector.GetMakesByYear(_AuthorizationKey, "UsedCar", CDate(Now), Year)
Run Code Online (Sandbox Code Playgroud)
我宁愿不使用case语句,因为它只需要更改一个参数,并且都附加了"Car".