小编Den*_*oli的帖子

ASP.NET MVC以编程方式获取控制器列表

在ASP.NET MVC中有没有办法通过代码枚举控制器并得到他们的名字?

例:

AccountController
HomeController
PersonController
Run Code Online (Sandbox Code Playgroud)

会给我一个列表,如:

Account, Home, Person
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc controller

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

使用React Native,Redux和Navigator进行导航的正确方法

我有一个使用Redux框架的React Native应用程序,我正在使用Navigator组件来处理导航.我在导航工作方面遇到了一些麻烦,我无法找到如何正确操作的好例子,所以我正在寻求一些帮助和澄清.

这是我目前所拥有的要点,这是有效的,但我不知道我是否做得对:

根组件

...
renderScene(route, navigator) {
    console.log('RENDER SCENE', route);
    const Component = route.component;
    return (
        <Component navigator={navigator} route={route} {...this.props} />
    )
}

render() {
    return (
        <Navigator
            renderScene={(route, nav) => this.renderScene(route, nav)}
            initialRoute={{ name: 'Signin', component: Signin }} />
    )
}
Run Code Online (Sandbox Code Playgroud)

登录组件

...
componentWillReceiveProps(nextProps) {
    if (!this.props.signedIn && nextProps.signedIn) {
        console.log('PUSHING TO MAIN');
        nextProps.navigator.push({ name: 'Main', component: Main });
    }
}
Run Code Online (Sandbox Code Playgroud)

问题:

1:我在这里首先想到的是我应该将navigator.push代码移动到一个动作中.然而,这是componentWillReceiveProps行动的正确的地方?Signin加载组件时,如果用户已经有活动会话,则会触发一个操作以登录用户.默认情况下,他们没有登录,所以当下一个道具通过我检查它是否改变然后推送到Main.

2:在"PUSH TO MAIN"记录后立即在我的控制台日志中,我看到两个"RENDER SCENE"日志:

[info] 'RENDER SCENE', …
Run Code Online (Sandbox Code Playgroud)

ios reactjs react-native redux

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

Swift中Objective-C typedef枚举的平等性

我在斯威夫特Facebook的Objective-C的SDK工作,我试图从枚举值进行比较的FBSessionState值.但是我得到了编译器错误:

找不到接受提供的参数的'=='的重载

我基本上想要完成:

if state == FBSessionStateOpen { ... }
Run Code Online (Sandbox Code Playgroud)

我可以通过比较价值来解决这个问题......

if state.value == FBSessionStateOpen.value { ... }
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有办法让这项工作更像是一个Swift枚举?

enums swift

14
推荐指数
1
解决办法
3611
查看次数

使用AJAX的ASP.NET OutPutCache VaryByParam和VaryByHeader

我正在尝试使用VaryByParam和VaryByHeader进行一些缓存.当一个AJAX请求进来时,我返回一个部分XHTML.当一个常规请求进来时,我发送带有页眉/页脚的部分XHTML页面.

我尝试通过执行以下操作来缓存页面:

[OutputCache( Duration = 5, VaryByParam = "nickname,page", VaryByHeader = "X-Requested-With" )]
Run Code Online (Sandbox Code Playgroud)

但是这不起作用...如果我首先执行常规请求然后运行AJAX调用我得到完整的缓存页面而不是部分,反之亦然.似乎VaryByHeader被忽略了.是因为正常请求中省略了X-Requested-With?或者它正在做VaryByParam或VaryByHeader?

我明显的方法是让AJAX请求调用一个只返回部分页面的不同方法,但是如果可能的话我想避免这种情况.

我正在使用带有OutputCacheAttribute的 ASP.NET MVC 1.0 .

asp.net caching outputcache

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

合并数据库如何处理重复的PK

我们有三个按地区分开的数据库,一个在洛杉矶,SF和纽约.所有数据库共享相同的模式,但包含特定于其区域的数据.我们希望将这些数据库合并为一个并对其进行镜像.我们需要保留每个区域的数据,但是将它们合并到一个db中.这给我们带来了很多问题,例如我们肯定会有重复的主键,外键可能会无效.

我希望找到一个有这样一个任务经验的人,他可以提供一些关于如何完成合并的技巧,策略和经验.

例如,一个想法是创建复合键,然后更改我们的代码和sprocs以通过复合键(region/original pk)查找数据.但这需要我们更改所有代码和sprocs.

另一个想法是只导入数据并让它生成新的PK,然后更新所有对新PK的FK引用.这样我们可能不必更改任何代码.

欢迎任何经验!

sql database merge

7
推荐指数
1
解决办法
2428
查看次数

Ninject:如何注入类库?

开始我正在使用Ninject 1.5.我有两个项目:Web项目和类库.我的DI配置在Web项目中.在我的类库中,我定义了以下内容:

    public interface ICacheService<T>
    {
            string Identifier { get; }
            T Get();
            void Set( T objectToCache, TimeSpan timeSpan );
            bool Exists();
    }
Run Code Online (Sandbox Code Playgroud)

然后是一个名为CategoryCacheService的具体类.

在我的web项目中,我绑定了两个:

Bind( typeof( ICacheService<List<Category>> ) ).To( typeof(CategoryCacheService)).Using<SingletonBehavior>();
Run Code Online (Sandbox Code Playgroud)

在我的类库中,我有HtmlHelper类的扩展方法,例如:

public static class Category
 {
  [Inject]
  public static ICacheService<List<Category>> Categories { get; set; }

  public static string RenderCategories(this HtmlHelper htmlHelper)
  {
   var c = Categories.Get();

   return string.Join(", ", c.Select(s => s.Name).ToArray());
  }
 }
Run Code Online (Sandbox Code Playgroud)

我被告知你不能注入静态属性,而是我应该使用Kernel.Get <>() - 但是......由于上面的代码在类库中,我无法访问内核.如何从这一点获取内核,或者有更好的方法吗?

dependency-injection ninject

6
推荐指数
1
解决办法
5126
查看次数

如何通过WCF传递List <Interface>?

我有一个WCF服务,我试图在我的一个操作合同中返回一个List(IWatchable是我建立的自定义界面).当我在客户端上测试服务时,该方法返回object[]而不是List<IWatchable>.是否可以返回IWatchable列表,因为IWatchable是与WCF的接口?

方法:

public List<IWatchable> GetWorkload( Guid nodeId, int maximum )
Run Code Online (Sandbox Code Playgroud)

IWatchable:

public interface IWatchable
{
    string ActionName { get; set; }
    Guid ActionReference { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

希望更多的信息将有所帮助......

我有一个派生界面:

public interface IAMRAWatchable: IWatchable
Run Code Online (Sandbox Code Playgroud)

以下三个具体实现IAMRAWatchable:

public class InstrumentationWatch: IAMRAWatchable
public class OutputWatch: IAMRAWatchable
etc...
Run Code Online (Sandbox Code Playgroud)

在我的WCF方法中返回List<IWatchable>我想发送一个InstrumentationWatch和一个OutputWatch到客户端...这是可能的还是我以错误的方式进行此操作?


解决

感谢John,我找到了解决方案.KnownType自从我使用以来我没有工作List<IWatchable>- 所以我将我的列表包装到一个新类中并添加了属性.我需要重新考虑我的代码,但对于其他感兴趣的人来说,这个类是:

[DataContract]
[KnownType( typeof( InstrumentationWatch ) )]
[KnownType( typeof( OutputWatch ) )]
public class WorkInfo
{
    [DataMember] …
Run Code Online (Sandbox Code Playgroud)

wcf interface

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

Electron Builder 代码签名下载证书错误

我正在构建一个 Electron 应用程序并使用 npm 包电子构建器为 Windows 构建应用程序和安装程序。我正在尝试使用环境变量CSC_LINKCSC_KEY_PASSWORD环境变量来签署应用程序,如下所述:https : //github.com/electron-userland/electron-builder#travis-appveyor-and-other-ci-servers

第一次尝试时,错误和堆栈跟踪是:

Unhandled rejection Error: unable to verify the first certificate
at Error (native)
at TLSSocket.<anonymous> (_tls_wrap.js:1065:38)
at emitNone (events.js:80:13)
at TLSSocket.emit (events.js:179:7)
at TLSSocket._init.ssl.onclienthello.ssl.oncertcb.TLSSocket._finishInit (_tls_wrap.js:593:8)
at TLSWrap.ssl.onclienthello.ssl.oncertcb.ssl.onnewsession.ssl.onhandshakedone (_tls_wrap.js:425:38)
From previous event:
at Object.downloadCertificate (C:\projects\presentation\Electron\node_modules\electron-builder\src\codeSign.ts:97:18)
...
Run Code Online (Sandbox Code Playgroud)

然后我尝试设置环境变量NODE_TLS_REJECT_UNAUTHORIZED=0,现在得到一个不同的错误:

Unhandled rejection Error: Request error, status 400: Bad Request
at ClientRequest.<anonymous> (C:\projects\presentation\Electron\node_modules\electron-builder\src\httpRequest.ts:36:16)
...
Run Code Online (Sandbox Code Playgroud)

在电子构建器中调用的特定行httpRequest.ts似乎只是使用节点的 https 模块:https: https.request(...) //github.com/electron-userland/electron-builder/blob/master/src/httpRequest.ts#L28

这让我相信 Windows 机器或证书有问题。我在 Windows 10 节点 5.9.0 上运行它。

node.js electron electron-builder

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

使用 Simple Injector 自动注册通用存储库

我找不到使用 Simple Injector (v3) 注册通用存储库的方法。

我有一个基类GenericRepository<T>和一个接口ILinkRepository。基类和接口都实现IGenericRepository<T>. 我对存储库的实现LinkRepository继承GenericRepository<T>并实现了ILinkRepository.

然后我有一个服务类,它通过构造函数获取存储库LinkService(ILinkRepository repository)

我想通过 Simple Injector 自动注册我的通用存储库,所以我试过这个:

container.Register(typeof(IGenericRepository<>), new []
{
    typeof(IGenericRepository<>).Assembly
});
Run Code Online (Sandbox Code Playgroud)

当 Simple Injector 尝试验证我的容器时,出现错误:

LinkService 类型的构造函数包含名称为“repository”且类型为 ILinkRepository 的未注册参数。请确保 ILinkRepository 已注册...

那么有没有其他方法可以告诉 Simple Injector ILinkRepository 是一个 LinkRepository 实例而无需像下面那样直接注册它?

container.Register<ILinkRepository, LinkRepository>()
Run Code Online (Sandbox Code Playgroud)

c# generics dependency-injection simple-injector

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