我希望能够使用Guice注入通用接口的通用实现.
public interface Repository<T> {
void save(T item);
T get(int id);
}
public MyRepository<T> implements Repository<T> {
@Override
public void save(T item) {
// do saving
return item;
}
@Override
public T get(int id) {
// get item and return
}
}
Run Code Online (Sandbox Code Playgroud)
在C#中使用Castle.Windsor,我可以做到:
Component.For(typeof(Repository<>)).ImplementedBy(typeof(MyRepository<>))
Run Code Online (Sandbox Code Playgroud)
但我不认为Guice中存在等价物.我知道我可以TypeLiteral
在Guice 中使用来注册个人实现,但是有没有办法像Windsor那样一次注册它们?
编辑:
这是一个用法示例:
Injector injector = Guice.createInjector(new MyModule());
Repository<Class1> repo1 = injector.getInstance(new Key<Repository<Class1>>() {});
Repository<Class2> repo2 = injector.getInstance(new Key<Repository<Class2>>() {});
Run Code Online (Sandbox Code Playgroud)
虽然更可能的用法是注入另一个类:
public class ClassThatUsesRepository {
private Repository<Class1> repository;
@Inject
public ClassThatUsesRepository(Repository<Class1> …
Run Code Online (Sandbox Code Playgroud) 我在PostgreSQL上使用fluentnhibernate.Fluentnhibernate是最新版本.PosrgreSQL版本是8.4.我的创建ISessionFactory的代码:
public static ISessionFactory CreateSessionFactory()
{
string connectionString = ConfigurationManager.ConnectionStrings["PostgreConnectionString"].ConnectionString;
IPersistenceConfigurer config = PostgreSQLConfiguration.PostgreSQL82.ConnectionString(connectionString);
FluentConfiguration configuration = Fluently
.Configure()
.Database(config)
.Mappings(m =>
m.FluentMappings.Add(typeof(ResourceMap))
.Add(typeof(TaskMap))
.Add(typeof(PluginMap)));
var nhibConfig = configuration.BuildConfiguration();
SchemaMetadataUpdater.QuoteTableAndColumns(nhibConfig);
return configuration.BuildSessionFactory();
}
Run Code Online (Sandbox Code Playgroud)
当我在SchemaMetadataUpdater.QuoteTableAndColumns(nhibConfig)行执行代码时; throw error:System.NotSupportedException:不支持指定的方法.请帮帮我!我非常需要解决方案.最好的祝福
我正在寻找可以将(最好是只更改过的)文件从开发机器复制到分段机器,最后复制到一组生产机器的东西.
"假设"模式会很好,"回滚"最后一次部署的能力也会很好.数据库迁移不是必需的功能.
更新:免费/低成本的工具会很棒,但成本并不是唯一的问题.实际上可以管理从一个环境到下一个环境(dev-> staging-> production而不是从开发机器到每个环境)的部署的工具也是理想的.
另一个很好的功能是只能复制更改的文件 - 我们的一些旧网站包含数百个.asp文件.
我有一个ASP.Net 2.0应用程序,它使用集成的Windows身份验证来验证/授权用户.该应用程序在Windows XP/IIS 5.1,Windows Server 2008/IIS 7和Windows Vista/IIS 7上正常运行.当我尝试在Windows 7/IIS 7.5上运行此应用程序时,出现以下异常:The trust relationship between this workstation and the primary domain failed.
堆栈跟踪如下:
[SystemException: The trust relationship between this workstation and the primary domain failed.
]
System.Security.Principal.NTAccount.TranslateToSids(IdentityReferenceCollection sourceAccounts, Boolean& someFailed) +1085
System.Security.Principal.NTAccount.Translate(IdentityReferenceCollection sourceAccounts, Type targetType, Boolean forceSuccess) +46
System.Security.Principal.WindowsPrincipal.IsInRole(String role) +128
System.Web.Configuration.AuthorizationRule.IsTheUserInAnyRole(StringCollection roles, IPrincipal principal) +229
System.Web.Configuration.AuthorizationRule.IsUserAllowed(IPrincipal user, String verb) +354
System.Web.Configuration.AuthorizationRuleCollection.IsUserAllowed(IPrincipal user, String verb) +245
System.Web.Security.UrlAuthorizationModule.OnEnter(Object source, EventArgs eventArgs) +11153304
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171
Run Code Online (Sandbox Code Playgroud)
web.config文件包含与身份验证/授权相关的以下信息:
<authentication …
Run Code Online (Sandbox Code Playgroud) 我目前正在使用Facebook API和C#.
我要做的是将图像上传到活动.
我尝试了两种方法,但似乎都没有用.有人可以看看.
方法1
Dictionary<string, string> args = new Dictionary<string, string>();
string source = "@test.jpg";
string relpath = "/1234456789/photos";
args.Add("message", "sssssss");
args.Add("access_token", api.AccessToken);
args.Add("source", source);
api.Post(relpath, args);
Run Code Online (Sandbox Code Playgroud)
方法2
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(String.Format("http://graph.facebook.com/1234456789/photos"));
request.ContentType = "multipart/form-data";
request.Method = "POST";
string path = HttpUtility.UrlEncode("test.jpg");
request.BeginGetRequestStream(ar =>
{
using (StreamWriter writer = new StreamWriter((ar.AsyncState as HttpWebRequest).EndGetRequestStream(ar)))
{
writer.Write("{0}={1}&", "message", HttpUtility.UrlEncode("Test"));
writer.Write("{0}=@{1}&", "source", path);
writer.Write("{0}={1}", "access_token",
api.AccessToken);
}
}, request);
Run Code Online (Sandbox Code Playgroud)
方法3
WebClient client = new WebClient();
byte[] responseBinary = client.UploadFile("http://localhost:61689/Widgets/test2.aspx", "POST", @"C:\test.jpg");
string …
Run Code Online (Sandbox Code Playgroud) 我一直在努力解决这个问题,而且我已经阅读了标准谷歌留言板答案中的一些相互矛盾的信息.
我要做的是从活动目录中检索域用户(即当前登录用户的)电子邮件地址.我的ASP.NET 4网站是为Windows身份验证设置的,一切正常,直到活动目录调用.
当我执行以下操作时,我在search.findAll()行上得到一个COMException.异常消息是"发生操作错误"(非常有用的消息呃?)(为了便于阅读,删除了代码)
WindowsIdentity winId = (WindowsIdentity)HttpContext.Current.User.Identity;
WindowsImpersonationContext wic = null;
wic = winId.Impersonate();
using (DirectoryEntry root = new DirectoryEntry(rootQuery))
{
String userQuery = GetUserQuery();
DirectorySearcher searcher = new DirectorySearcher(root);
searcher.SearchScope = SearchScope.Subtree;
searcher.Filter = userQuery;
SearchResultCollection results = searcher.FindAll();
return (results[0].Properties["proxyaddresses"][0]).ToString();
}
Run Code Online (Sandbox Code Playgroud)
所以基本上我想模仿登录用户进行通话.请注意,如果我将凭据直接传递给DirectoryEntry构造函数,此代码将按预期工作.此外,如果我摆脱模拟代码并在Web配置中设置应用程序范围的模拟,我会收到相同的错误.
所以我想我的问题,在我浪费任何时间之前,这是否可能?或者您是否必须指定用户名和密码才能访问AD?
在我的开发盒上BTW我正在运行IIS5,但可能会部署到IIS6.
编辑:
按照要求:
rootQuery = @"LDAP://{0}.com/DC={0}, DC=com";
userQuery = @"(&(samAccountName={0})(objectCategory=person)(objectClass=user))";
Run Code Online (Sandbox Code Playgroud)
使用适当的域和用户指定.
.net asp.net .net-4.0 active-directory windows-authentication
在针对lucene.net的2.0版本构建3.5应用程序时,是否需要注意哪些特殊注意事项?
我发现有几个人会为lucene发布他们的项目文件,但不确定这是否是正确的方法.
我有一个jQuery UI对话框,可以在我的应用程序上显示一个窗口.此窗口在IE7,IE8,FF和chorme中正确显示,但在IE9上无法正常工作.当我点击应打开对话框的链接时,没有任何反应.
有人可以帮帮我吗?
$('#open_chat').click(function() {
$('#chat').dialog({
width: 422,
resizable: false,
title: '<img align="absmiddle" src="/img/icone_chat.png"> Chat <span>(clique e arraste para movimentar)</span>'
});
return false;
})
Run Code Online (Sandbox Code Playgroud) 我们制定了每晚将文件上传到合作伙伴 FTP 站点的流程。他们现在需要被动连接,而我们的上传现在失败。.NET 4 FtpWebRequest 是否可以实现被动连接而不是主动连接?如果是这样,有人可以提供一个例子吗?
使用带有Razor视图引擎的三元组时遇到一些麻烦.
我的模型有一个字符串属性.如果该字符串属性为null,我想null
在视图中呈现.如果属性不为null,我希望它使用前导和尾随呈现属性值'
.
我怎样才能做到这一点?
更新:对不起,稍微改了一下问题.
我有一个列表,由多个后台线程访问以进行更新/读取.更新操作包括插入和删除.
为了在没有同步问题的情况下同时执行此操作,我在类中使用了一个私有只读对象的锁.
为了最大限度地减少我在读取数据时需要锁定列表的时间,我会对其进行深度克隆并返回深度克隆并解锁字典以进行插入/删除更新.
因此,每次读取列表都会增加我的服务的内存消耗.
需要注意的一点是,插入/删除是包含列表的类的内部.但阅读是为了公共消费.
我的问题是:
有什么办法,我可以避免克隆列表并仍然使用它同时使用读/写锁读取?
public class ServiceCache
{
private static List<Users> activeUsers;
private static readonly object lockObject = new object();
private static ServiceCache instance = new ServiceCache();
public static ServiceCache Instance
{
get
{
return instance;
}
}
private void AddUser(User newUser)
{
lock (lockObject)
{
//... add user logic
}
}
private void RemoveUser(User currentUser)
{
lock (lockObject)
{
//... remove user logic
}
}
public List<Users> ActiveUsers
{
get
{
lock (lockObject)
{
//The cache …
Run Code Online (Sandbox Code Playgroud) asp.net ×3
c# ×3
.net ×2
iis ×2
.net-4.0 ×1
c#-4.0 ×1
concurrency ×1
deployment ×1
facebook ×1
ftp ×1
guice ×1
java ×1
jquery ×1
jquery-ui ×1
list ×1
locking ×1
lucene.net ×1
nhibernate ×1
passive-mode ×1
postgresql ×1
razor ×1
typeliteral ×1
view ×1
windows-7 ×1