问题列表 - 第44541页

在StructureMap中自动解析Interface <T>到Implementation <T>(仅与泛型类型T不同)

我有一个接口(IRepository<T>),目前正在为每个特定的存储库进行扩展,即:IUserRepository : IRepository<User>.

这些接口中的每一个都具有相应的具体类,即:UserRepository : Repository<User>, IUserRepository.

这些单独的存储库不添加任何其他功能,它们都是空接口/类,仅用于传递泛型.

我用StructureMap解决IUserRepositoryUserRepository使用注册表与组装扫描仪和一些命名约定.

我希望这可以转向一种更优化的状态,而不是传递实例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 : Entity
  • Repository<T> : IRepository<T> where T : Entity
  • Person : Entity
  • Product : Entity
  • Order : Entity
  • Whatever : 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)

c# structuremap asp.net generics

22
推荐指数
2
解决办法
1万
查看次数

使用核心动画层动画视图

我有一个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)

macos cocoa core-animation core-graphics objective-c

8
推荐指数
1
解决办法
5541
查看次数

在本机代码中使用 Windows 环境变量

// 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.txtC:\Program Files (x86)\aaa.txt取决于操作系统的环境。但它没有用。
怎么了?如何在本机代码中使用环境变量?

windows winapi environment-variables

2
推荐指数
1
解决办法
2413
查看次数

查询在Oracle SQL Developer中快速运行,但在SSRS 2008 R2中运行缓慢

就是这么简单:在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秒内运行,具体取决于要求的数据量.造成这种复杂性的一些原因是:

  • 正确处理逗号分隔的成本中心列表参数
  • 允许每周细分是可选的,如果包括在内,即使没有数据,也可以确保一个月内的所有周数.
  • 适当时显示"No Invoices".
  • 允许可变数量的汇总月份.
  • 有一个可选的YTD总计.
  • 包括以前/历史比较数据意味着我不能简单地用这个月的销售商,我要显示所有的供应商,将在任何历史列.

无论如何,所以这里是查询,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)

sql-server oracle execution-time oracle11g ssrs-2008

11
推荐指数
1
解决办法
4749
查看次数

BeginThread结构 - Delphi

我现在有一个几乎完成的应用程序,我想要实现的下一个功能是线程.我选择使用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)

delphi multithreading beginthread

5
推荐指数
1
解决办法
4843
查看次数

Linq to SQL - 有没有办法将扩展方法映射到SQL函数/存储过程?

我有一个DateTime类型的扩展方法,我想在我的Linq to Sql中使用.不幸的是,执行ToList()然后使用扩展方法不是一个选项.有没有办法将扩展方法映射到实际的SQL函数?

c# linq-to-sql

5
推荐指数
1
解决办法
299
查看次数

在Django中,如何检查用户是否在某个组中?

我在Django的管理站点中创建了一个自定义组.

在我的代码中,我想检查用户是否在此组中.我怎么做?

python django django-authentication

132
推荐指数
7
解决办法
10万
查看次数

通过核心数据查询最大值,最小值和其他值

是否可以使用Core Data框架在数据库中查询max,min和其他值?

cocoa-touch core-data ios

2
推荐指数
1
解决办法
5219
查看次数

OAuth 问题,POST 带参数

我正在使用 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 在其身份验证中生成的基本字符串。谢谢。

iphone authentication encryption oauth objective-c

4
推荐指数
1
解决办法
6298
查看次数

setVolume无法使用AVMutableAudioMixInputParameters从手机本地iPod库播放

我目前正在尝试使用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)

iphone volume objective-c mpmediaquery avplayer

5
推荐指数
1
解决办法
2648
查看次数