我有一个接口(IRepository<T>),目前正在为每个特定的存储库进行扩展,即:IUserRepository : IRepository<User>.
这些接口中的每一个都具有相应的具体类,即:UserRepository : Repository<User>, IUserRepository.
这些单独的存储库不添加任何其他功能,它们都是空接口/类,仅用于传递泛型.
我用StructureMap解决IUserRepository到UserRepository使用注册表与组装扫描仪和一些命名约定.
我希望这可以转向一种更优化的状态,而不是传递实例IUserRepository并将其解析UserRepository,我可以传递IRepository<User>并解决它Repository<User>.
这将消除创建这些额外的空接口和类的需要.
我无法找到一种方法来使用StructureMap的配置来设置这种通用映射.像这样的东西:
For(typeof(IRepository<>).Use(typeof(Repository<>)).WithTheGenericTypeFromTheInterfaceSuppliedAsATypeParameter();
Run Code Online (Sandbox Code Playgroud)
编辑
得到前几个答案之后,我想再澄清一下这个问题.
我不想为For配置的位创建单独的类.我希望在我的代码中有以下类/接口:
IRepository<T> where T : EntityRepository<T> : IRepository<T> where T : EntityPerson : EntityProduct : EntityOrder : EntityWhatever : Entity并按照惯例实现以下映射:
IRepository<Person> => Repository<Person>
IRepository<Product> => Repository<Product>
IRepository<Order> => Repository<Order>
IRepository<Whatever> => Repository<Whatever>
Run Code Online (Sandbox Code Playgroud)
但我不想为每个人创建一个映射,ala:
For<IRepository<Person>>().Use<Repository<Person>>();
For<IRepository<Product>>().Use<Repository<Product>>();
For<IRepository<Order>>().Use<Repository<Order>>();
For<IRepository<Whatever>>().Use<Repository<Whatever>>(); …Run Code Online (Sandbox Code Playgroud) 我有一个NSWindow包含NSView'Wants Core Animation Layer'的功能.然后视图包含许多NSImageView使用最初动画到位置的视图.当我运行动画时,它非常缓慢并且掉落了大部分帧.但是,如果我禁用"想要核心动画层",动画效果很好.我将需要核心动画层,但无法弄清楚如何让它充分发挥作用.
我可以做些什么来解决性能问题吗?
这是代码:
// AppDelegate
NSRect origin = ...;
NSTimeInterval d = 0.0;
for (id view in views)
{
[view performSelector:@selector(animateFrom:) withObject:origin afterDelay:d];
d += 0.05f;
}
// NSImageView+Animations
- (void)animateFrom:(NSRect)origin
{
NSRect original = self.frame;
[self setFrame:origin];
[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:0.20f];
[[self animator] setFrame:original];
[NSAnimationContext endGrouping];
}
Run Code Online (Sandbox Code Playgroud) // I have a permission to create a file to Program Files
const std::wstring sFileName = L"%ProgramFiles%\\aaa.txt";
HANDLE h = CreateFileW(
sFileName.c_str(),
GENERIC_READ,
FILE_SHARE_DELETE,
0,
CREATE_ALWAYS,
0,
0);
// INVALID_HANDLE_VALUE with ERROR_PATH_NOT_FOUND
Run Code Online (Sandbox Code Playgroud)
我预计它会使C:\Program Files\aaa.txt或C:\Program Files (x86)\aaa.txt取决于操作系统的环境。但它没有用。
怎么了?如何在本机代码中使用环境变量?
就是这么简单:在SQL Developer连接到Oracle 11g的几秒钟内运行的查询在SSRS 2008 R2中需要15-25分钟.我还没有尝试过其他版本的SSRS.到目前为止,我正在从VS 2008执行所有报告执行.
我正在使用OLE DB提供程序"OraOLEDB.Oracle.1",它在过去似乎比使用Oracle提供程序给我更好的结果.
这是我到目前为止所能确定的:
•延迟是在DataSet执行阶段,与结果集或渲染时间无关.(通过直接从我插入的表中选择相同的行集来证明.)
•SSRS本身并未挂断.它确实在等待延迟所在的Oracle(通过从Oracle端终止数据库会话来证明,这导致SSRS中关于被杀死的会话的快速错误).
•我尝试使用以下形式的参数进行直接查询:参数.我的查询的早期版本更简单,可以直接查询,但似乎过了一定的复杂性,查询将从SSRS开始永远.
•然后我切换到执行将查询结果插入表或全局临时表的SP.这有点帮助,让我比直接查询更远,但同样,似乎增加的查询复杂性或长度最终也破坏了这种方法.注意:运行填充表的SP是可行的,因为在DataSource选项中选中了"使用单个事务"选项,然后按照它们在rdl文件中的出现顺序运行DataSet.只要满足所有参数,仍然会运行不返回Fields的DataSet.
•我刚刚尝试了一个表返回函数,这仍然没有改进,即使在SQL Developer中使用文字参数的直接调用在1-5秒内返回.
•有问题的数据库没有统计数据.它是供应商创建的产品的一部分,我们没有时间或管理层支持来创建/更新统计数据.我使用DYNAMIC_SAMPLING提示来动态计算统计数据并获得更好的执行计划:没有统计数据,基于成本的优化器很少使用LOOP连接而不是HASH连接,导致类似的多分钟执行时间.因此,我提出了查询提示来强制连接顺序,并使其使用策略散列连接,将执行时间缩短到几秒钟.我没有回去尝试使用这些执行提示直接在SSRS中查询.
•我从我们的Oracle DBA那里得到了一些帮助,他们设置了一个跟踪(或者等同于Oracle的东西)并且他能够看到正在运行的东西,但到目前为止他还没有找到任何有用的东西.不幸的是,他的时间有限,我们无法真正深入了解服务器端的执行情况.我没有经验可以快速完成这项工作,也没有时间自己研究如何做到这一点.关于如何确定发生了什么的建议将不胜感激.
我唯一的假设是:
•查询以某种方式获得了糟糕的执行计划.例如,当存在数万个"左"或外环行而不是仅仅几百个时,不正确地使用LOOP连接而不是HASH连接.
•SSRS可以将参数提交为nvarchar(4000)或其他东西而不是合理的东西,并且由于Oracle SP和函数参数没有长度规范但是从查询调用中获取它们的执行长度,那么参数嗅探等一些过程就是弄乱执行计划,就像前一点一样.
•查询以某种方式被SSRS /提供者重写.我使用多值参数,但不是这样:参数作为表达式Join(参数!MultiValuedParameter.Value,",")提交,因此它不需要任何重写.只是一个简单的绑定和提交.我不知道在SP和函数调用中这是怎么回事,但天哪,还有什么呢?
我意识到这是一个非常复杂和冗长的查询,但它完全符合我的需要.它会在1-5秒内运行,具体取决于要求的数据量.造成这种复杂性的一些原因是:
无论如何,所以这里是查询,SP版本(虽然我认为它不会有太大帮助).
create or replace
PROCEDURE VendorInvoiceSummary (
FromDate IN date,
ToDate IN date,
CostCenterList IN varchar2,
IncludeWeekly IN varchar2,
ComparisonMonths IN number,
IncludeYTD IN varchar2
)
AS
BEGIN
INSERT INTO InvoiceSummary (Mo, CostCenter, Vendor, VendorName, Section, TimeUnit, Amt)
SELECT
Mo,
CostCenter,
Vendor,
VendorName,
Section,
TimeUnit,
Amt …Run Code Online (Sandbox Code Playgroud) 我现在有一个几乎完成的应用程序,我想要实现的下一个功能是线程.我选择使用BeginThread(),虽然我知道delphi中的TThread.我遇到的问题是BeginThread()调用的结构.通常,程序中调用我想要线程化的函数的行是
CompareFiles(form1.Edit3.Text,Form1.Edit4.Text,Form1.StringGrid2,op);
Run Code Online (Sandbox Code Playgroud)
op是一个整数.
我已经将它切换出来以便从中创建一个线程
BeginThread(nil,0,CompareFiles,Addr('form1.Edit3.Text,Form1.Edit4.Text,Form1.StringGrid2,op'),0,x);
Run Code Online (Sandbox Code Playgroud)
从我可以找到的关于如何实际使用BeginThread()的少量信息来看,这应该是一个很好的调用,但是在编译时我得到的是关于我的BeginThread()语句参数的结构的编译器错误.
编辑信息.
调用CompareFiles的当前过程是
procedure TForm1.Panel29Click(Sender: TObject);
var
op,x : integer;
begin
if (Form1.Edit3.Text <> '') AND (Form1.Edit4.Text <> '') then
begin
op := 3;
if RadioButton7.Checked = True then op := 0;
if RadioButton3.Checked = True then op := 1;
if RadioButton4.Checked = True then op := 2;
if RadioButton5.Checked = True then op := 3;
if RadioButton6.Checked = True then op := 4;
CompareFiles(form1.Edit3.Text,Form1.Edit4.Text,Form1.StringGrid2,op);
end;
end;
Run Code Online (Sandbox Code Playgroud)
如果我按照几个人的建议使用TThread,并且如下面Rob所示,我很困惑a)我将如何将op,Edit3/4.Text和StringGrid2传递给CompareFiles.从TThread的例子猜测我已经看过我以为我会替换上面的代码TCompareFilesThread.Execute并将当前代码从Panel29Click放入TCompareFilesThread.Create然后添加
FEdit3Text := Edit3Text; …Run Code Online (Sandbox Code Playgroud) 我有一个DateTime类型的扩展方法,我想在我的Linq to Sql中使用.不幸的是,执行ToList()然后使用扩展方法不是一个选项.有没有办法将扩展方法映射到实际的SQL函数?
我在Django的管理站点中创建了一个自定义组.
在我的代码中,我想检查用户是否在此组中.我怎么做?
是否可以使用Core Data框架在数据库中查询max,min和其他值?
我正在使用 Jon Crosby 的开源 Objective-C OAuth 库http://code.google.com/p/oauthconsumer/进行一些基本的 http 身份验证,它不处理令牌,只处理消费者密钥和消费者秘密。我的代码非常适用于 GET、带有 URL 参数的 GET 和 POST。但是,当我发出在 URL 中有参数的 POST 请求时,该请求授权失败。我试图找出原因。
服务器正在使用 Apache Commons OAuth,因此我想将我的基本字符串与该库进行比较。这是一个人为的示例以及我的库生成的基本字符串和签名。任何人都可以看到问题是什么?
consumer key: abcdef
consumer secret: ghijkl
POST request: http://emptyrandomhost.com/a/uriwith/params?interesting=foo&prolific=bar
my base string: POST&http%3A%2F%2Femptyrandomhost.com%2Fa%2Furiwith%2Fparams&interesting%3Dfoo%26oauth_consumer_key%3Dabcdef%26oauth_nonce%3D1%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D2%26oauth_version%3D1.0%26prolific%3Dbar
Run Code Online (Sandbox Code Playgroud)
此数据生成以下 OAuth 标头授权:
Authorization: OAuth oauth_consumer_key="abcdef",
oauth_version="1.0",
oauth_signature_method="HMAC-SHA1",
oauth_timestamp="2",
oauth_nonce="1",
oauth_signature="Z0PVIz5Lo4eB7aZFT8FE3%2FFlbz0%3D"
Run Code Online (Sandbox Code Playgroud)
显然我的签名是错误的。问题要么出在基本字符串的构造中,要么出在 HMAC-SHA1 函数的实现方式中(使用来自 CommonHMAC.h 的 Apple 的 CCHmac,所以希望不是这样),或者出在我的 Base64Transcoder 上,它是开源 C. 2003 年,Jonathan Wight/Toxic Software。我主要怀疑基本字符串,因为请求适用于 GET 和 POST,并且只有在使用上述 URL 参数的 POST 时才会失败。
有很多 OAuth 经验的人能发现上面的问题吗?其他非常有用的是 Apache Commons OAuth 在其身份验证中生成的基本字符串。谢谢。
我目前正在尝试使用AVPlayer从手机本地iPod库播放音乐,而不是使用应用程序控制器播放MPMusicPlayerController.
我可以使用和MPMediaQuery从本地iPod lib中选择一个曲目,但是当我尝试使用AVMutableAudioMixInputParameters在较低级别启动音频时,它似乎根本不会降低音量.
我使用AVPlayer而不是MPMusicPlayerController的原因是我在后台同时播放其他音频而MPMusicPlayerController无法播放,因为使用AVPlayer的现有音频文件正在占用硬件.我目前的代码是:
// just blindly select all music for now.
MPMediaQuery *everything = [[MPMediaQuery alloc] init];
NSArray *itemsFromGenericQuery = [everything items];
MPMediaItem *song;
NSMutableArray *array = [[NSMutableArray alloc] init];
for (song in itemsFromGenericQuery)
{
[array addObject:song];
}
Run Code Online (Sandbox Code Playgroud)
所以此时数组是我的lib中的一个轨道数组.
现在抓住一个并使用AVPlayer播放它:
// grab the first song off the array
MPMediaItem *song = [array objectAtIndex:0];
NSURL *assetURL = [song valueForProperty:MPMediaItemPropertyAssetURL];
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:assetURL options:nil];
NSArray *audioTracks = [asset tracksWithMediaType:AVMediaTypeAudio];
AVAssetTrack *track = [audioTracks objectAtIndex:0];
NSMutableArray *allAudioParams = [NSMutableArray array]; …Run Code Online (Sandbox Code Playgroud) objective-c ×3
c# ×2
iphone ×2
asp.net ×1
avplayer ×1
beginthread ×1
cocoa ×1
cocoa-touch ×1
core-data ×1
delphi ×1
django ×1
encryption ×1
generics ×1
ios ×1
linq-to-sql ×1
macos ×1
mpmediaquery ×1
oauth ×1
oracle ×1
oracle11g ×1
python ×1
sql-server ×1
ssrs-2008 ×1
structuremap ×1
volume ×1
winapi ×1
windows ×1