我终于忍受了Dependency Injection(早就应该); 我开始玩Unity并遇到战略模式的问题.我可以使用容器向我返回基于名称的策略的特定实现,但我没有看到我应该如何在上下文中获得正确的策略.
让我们举一个简单的例子说明:上下文是一辆汽车,它有一个IEngine(策略),有2个实现,FastEngine和SlowEngine.代码将沿着这些方向看:
public interface IEngine
{
double MaxSpeed
{
get;
}
}
internal class FastEngine:IEngine
{
public double MaxSpeed
{
get
{
return 100d;
}
}
}
internal class SlowEngine:IEngine
{
public double MaxSpeed
{
get
{
return 10d;
}
}
}
public class Car
{
private IEngine engine;
public double MaximumSpeed
{
get
{
return this.engine.MaxSpeed;
}
}
public Car(IEngine engine)
{
this.engine = engine;
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题如下:我应该如何实例化快车或慢车?我可以使用容器为我提供每个实现,我可以设置一个"默认"实现来使用:
IUnityContainer container = new UnityContainer();
container.RegisterType<IEngine, FastEngine>();
container.RegisterType<IEngine, FastEngine>("Fast"); …Run Code Online (Sandbox Code Playgroud) c# dependency-injection ioc-container unity-container strategy-pattern
我相信下面三个在语法上是正确的; 但根据惯例允许哪些(特别是在企业中)?
下面的第一个用于我见过的大多数例子(例如JAXB),但它的详细说明:
<xs:annotation>
<xs:appinfo>
<myinfo>don't panic</myinfo>
</xs:appinfo>
</xs:annotation>
Run Code Online (Sandbox Code Playgroud)
下面的第二个是允许的,因为允许任何属性<appinfo>(不在xml架构自己的命名空间中).它更短,看起来合理 - 但它是传统的吗?
<xs:annotation>
<xs:appinfo myinfo="don't panic"/>
</xs:annotation>
Run Code Online (Sandbox Code Playgroud)
下面的最后一个是我最喜欢的,因为它太短并且不会使架构混乱.我确信这是合法的,因为同样<appinfo>,任何属性都是允许的<annotation>(同样,提供非xml架构命名空间).但是它在不使用的情况下对应用程序信息进行编码<appinfo>,所以我担心它会不受欢迎.可不可能是?
<xs:annotation myinfo="don't panic"/>
Run Code Online (Sandbox Code Playgroud)
非常感谢您的评论!
我想在java中编写ajax代码,即我想在不使用ajax的情况下使用ajax的功能.我正在寻找一些可以这样做的JAVA API.
就像我们通过JAVA程序发布网页数据一样,我想通过JAVA程序执行ajax的操作.
请建议.
我正在研究录音机应用程序,它工作得非常好.
但我坚持中断的问题.来电时,
- (void)audioRecorderBeginInterruption:(AVAudioRecorder *)recorder
Run Code Online (Sandbox Code Playgroud)
然后调用此方法并暂停录制.
如果用户拒绝来电:
- (void)audioRecorderEndInterruption:(AVAudioRecorder *)recorder
Run Code Online (Sandbox Code Playgroud)
然后在这里,我想从中断的那一刻开始重新录制.但是当我再次调用记录方法时,录制以新文件开始.
在Visual Basic中,可以使用一行代码来处理代码中的错误
"On Error Resume Next"
Run Code Online (Sandbox Code Playgroud)
Objective-C中有类似的东西吗?我的问题是我有一个"添加新单元格"添加按钮,在运行时创建一个新单元格.但是,细胞是可以重新订购的.当您尝试重新排序"添加新单元格"单元格时,我得到索引超出范围错误.如果我可以修复发生错误的错误,但是如果有错误处理程序我可以用来在出现错误时退出移动函数,那也很酷.
这是我的moveRowAtIndexPath代码:
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
iProfileAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
[appDelegate moveFromOriginal:fromIndexPath.row toNew:toIndexPath.row];
}
Run Code Online (Sandbox Code Playgroud)
这是我收到的错误:
*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSCFArray objectAtIndex:]: index (7) beyond bounds (7)'
Run Code Online (Sandbox Code Playgroud) 我想在后台运行一个bat文件.我在谷歌搜索,我发现了一些使用hstart和cmdow的例子.但是不管怎么说用windows命令做这个吗?当我没有为我的项目添加额外的程序时,我真的很好!提前
假设有一个我们上传图片的网站.现在,当我们必须显示该特定登录用户的相册时.我们能做的是:
现在我的问题是:
检索该文件而不是fopen()的各种选项有哪些?意思是,还有什么比这更快的东西?
我有以下代码来获取产品列表
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('name')
->addAttributeToFilter("category_ids", array('finset'=>$this->category_id));
foreach($collection as $product) {
echo $product->getName();
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,我怎么能不回应"简单"但属于父"可配置"产品的产品.(例如,不要显示"Red Shirt Medium",因为它属于"Red Shirt")
我已经知道这个协会住在' catalog_product_super_link'但我刚刚开始使用Magento并且不幸的是不知道如何进行过滤:)
干杯伙计们,
克里斯.
我正在使用django和fastcgi + nginx.我想知道在这种情况下存储日志(错误)的位置