我仍然在寻求建立(和理解)解耦,IoC,DI等现代编程约定的永恒追求.我正在试图弄清楚如何构建存储库.我已经检查了数据库抽象层设计的帖子- 以正确的方式使用IRepository?这是非常有帮助的,但我仍然遇到一些让我一直迷惑的问题.
我的程序现在有4层......
Web(项目| ASP.NET MVC应用程序) - 引用Models.dll和Persistence.dll
模型(域对象)
持久性(域对象的流畅nHibernate映射)
公用事业(提供商,存储库)
现在,我正在尝试编写一个简单的Membership Repository.我的第一个任务......?
当有人试图注册时,检查是否存在电子邮件地址.这似乎一切都很好 - 所以我去尝试找出放置它的位置.
起初,我只是将它放在MembershipProvider
类CreateUser
方法中.然而,这属于公用事业项目.到目前为止,Utilities还不了解nHibernate.只有Persistence Project对nHibernate有任何了解.
那么,我的CreateUser
方法需要查询我的数据库.那么这里最好的做法是什么?我是否UserRepository
在Persistence
项目中创建了一个,并且只调用一个完整的方法CheckEmail
?或者我只是将nHibernate .dll添加到我的Utilities
项目中,并在Provider中编写会话查找?
在我的持久性项目中制作存储库以执行特定操作而不是创建提供程序似乎更多的工作.如果我必须为他们制作存储库,为什么我甚至会创建提供商?所有这些新方法的目的不是停止代码重复吗?但感觉就像保持"分开"我必须写相同的代码2或3次.这里的最佳做法是什么?
void main()
{
char s[100]="hello";
char *t;
t=(char*)malloc(100);
strcpy(t,s);
}
Run Code Online (Sandbox Code Playgroud)
另外,我们可以分配s
给t
这样的:t=s;
.使用替代方案有什么缺点?
如果我有:
template <class T>
class A
{
static void f()
{
// not using template parameter T
}
};
Run Code Online (Sandbox Code Playgroud)
在这种情况下A<int>::f()
是相同的A<double>::f()
,但我不希望A::f()
通过模板参数调用.是否有允许调用f()
但不需要模板参数的语法?
我已将我的应用程序构建为已签名的SDK.我希望beta测试人员能够在他们的设备上安装这个,而无需安装和使用android sdk工具(我意识到apk可以使用命令行工具安装,但是更喜欢没有必要).
我尝试手动安装它,但它失败了.我有一个安卓平板电脑,我正在测试.我将apk复制到我设备的SD卡上,然后点击它.这提供了使用App Manager安装它的选项.不幸的是,安装失败并显示消息"Application not installed".
有没有办法手动安装apk,而不使用命令行工具?
我的项目中有许多控制器,它们都是从一个名为BaseController的控制器继承的.我编写了一个自定义属性,我将其应用于整个BaseController类,因此每次操作都在我的任何控制器中运行时,该属性将首先运行.
问题是我有几个控制器动作,我想忽略该属性,但我不知道该怎么做.
有人可以帮忙吗?我正在使用MVC 1.
谢谢.
当Facebook发送实时更新时,它们在HTTP标头中包含X-Hub-Signature.根据他们的文档(http://developers.facebook.com/docs/api/realtime),他们使用SHA1和应用程序密钥作为密钥.我试着像这样验证签名:
public void MyAction() {
string signature = request.Headers["X-Hub-Signature"];
request.InputStream.Position = 0;
StreamReader reader = new StreamReader(request.InputStream);
string json = reader.ReadToEnd();
var hmac = SignWithHmac(UTF8Encoding.UTF8.GetBytes(json), UTF8Encoding.UTF8.GetBytes("MySecret"));
var hmacBase64 = ToUrlBase64String(hmac);
bool isValid = signature.Split('=')[1] == hmacBase64;
}
private static byte[] SignWithHmac(byte[] dataToSign, byte[] keyBody) {
using (var hmacAlgorithm = new System.Security.Cryptography.HMACSHA1(keyBody)) {
hmacAlgorithm.ComputeHash(dataToSign);
return hmacAlgorithm.Hash;
}
}
private static string ToUrlBase64String(byte[] Input) {
return Convert.ToBase64String(Input).Replace("=", String.Empty)
.Replace('+', '-')
.Replace('/', '_');
}
Run Code Online (Sandbox Code Playgroud)
但我似乎无法让这一点得到验证.对我做错了什么的想法?
提前致谢.
我正在尝试找到一个可靠的解决方案,从一串字符中提取url.我有一个用户回答问题的网站,在源框中,他们输入了他们的信息来源,我允许他们输入网址.我想提取该URL并使其成为超链接.与Yahoo Answers的工作方式类似.
有谁知道可以做到这一点的可靠解决方案?
我找到的所有解决方案都适用于某些URL,但不适用于其他URL.
谢谢
父链接:
<a href="feedback.php" id="feed">Provide your feedback here</a>
Run Code Online (Sandbox Code Playgroud)
用于启动fancybox的jQuery代码是......
$("#feed").fancybox();
Run Code Online (Sandbox Code Playgroud)
feedback.php中的代码...
<html>
<head>
<script language="javascript">
$(document).ready(function(){
$("#feed_submit").click(function(){
//Name is alerted
alert($("#name").val());
//code to close fancy box(Not working)
$.fancybox.close();
});
});
</script>
</head>
<body>
<form method="post" name="feedback" id="feedback" action="">
<div>
<label>name</label>
<input type="text" name="name" id="name"/>
</div>
<div>
<label>feedback</label>
<input type="text" name="content" id="content"/>
</div>
<div><input type="button" name="feed_submit" id="submit" value="submit"></div>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
单击提交按钮后,我需要使用jquery关闭此页面中的花式框
我试过用
$.fancybox.close();
parent.$.fancybox.close();
Run Code Online (Sandbox Code Playgroud)
但这对我不起作用.如果有任何关闭此ajax表格的选项,请告诉我.
我已经在Windows Scheduler中设置了一个任务(在Win Server 2008上).它工作得很好但是在高峰时段(当盒子被用于其他东西时)会给系统带来负担.我目前每15分钟就有一份工作.Can Task Sch.设置为每15分钟运行一次,但仅限于某个时间窗口.所以我可以把它设置为每15分钟运行一次,但是从下午5点到凌晨5点 - 并且从早上5点到下午5点都不运行?
假设我有以下HTML:
<img id="foo" src="bar1.jpg"/>
Run Code Online (Sandbox Code Playgroud)
我想切换src
到bar2.jpg
我可以这样做吗?
$("#foo").attr("src", "bar2.jpg");
Run Code Online (Sandbox Code Playgroud)
或者我必须这样做?
$("#foo").removeAttr("src");
$("#foo").attr("src", "bar2.jpg");
Run Code Online (Sandbox Code Playgroud)
谢谢!
asp.net-mvc ×2
jquery ×2
ajax ×1
android ×1
asp.net ×1
base-class ×1
c ×1
c# ×1
c++ ×1
coding-style ×1
facebook ×1
fancybox ×1
html ×1
inheritance ×1
javascript ×1
php ×1
pointers ×1
preg-replace ×1
real-time ×1
regex ×1
strcpy ×1
templates ×1
url ×1