小编ktu*_*nik的帖子

Castle Windsor - 如何映射构造函数注入中的命名实例

也许这很容易,但在互联网上搜索已经让我头疼

这是问题所在:

interface IValidator
{
    void Validate(object obj);
}

public class ValidatorA : IValidator
{
    public void Validate(object obj) { }
}

public class ValidatorB : IValidator
{
    public void Validate(object obj) { }
}


interface IClassA { }
interface IClassB { }

public class MyBaseClass
{
    protected IValidator validator;

    public void Validate()
    {
        validator.Validate(this);
    }
}

public class ClassA : MyBaseClass, IClassA
{
    //problem: validator should ValidatorA
    public ClassA(IValidator validator) { }
}

public class ClassB : MyBaseClass, IClassB …
Run Code Online (Sandbox Code Playgroud)

c# castle-windsor

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

是否可以在Kotlin Anko中重复使用布局

我读到使用Anko的最大好处是它的可重用性.但我找不到它的确切例子.

目前在新的Android布局系统中,锅炉板如下:

DrawerLayout (with some setup)
   CoordinatorLayout (with some setup)
      AppBarLayout (with some setup)
         ToolBar
      <The Main Content>
   NavigationView (with header inflated)
Run Code Online (Sandbox Code Playgroud)

从上面的布局结构来看,只有<The Main Content>varry.在许多情况下,这些仪式设置几乎在每个活动中都重复.

所以在这里,Anko正在考虑是否有关于该问题的可重用解决方案.我不期望它可以重复用于通用布局,但至少我可以最小化项目中的仪式代码.也许我需要这样的东西:

class MainUI: AnkoComponent<MainActivity> {
  override fun createView(ui: AnkoContext<MainActivity>): View{
     return with(ui) {
        myCustomRootLayout {
           //here is what <The Main Content> will be
        }
     }
  }
}
Run Code Online (Sandbox Code Playgroud)

从上面的代码我期望myCustomRootLayout将完成根布局的所有仪式设置,如(DrawerLayout,CoordinatorLayout等).

那可能吗?

编辑 所以我认为我的问题是:如何制作一个可以托管其他组件的自定义组件

android android-layout kotlin anko

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

log field应该私有静态的原因是什么?

这是在C#中:

private static readonly ILog log = LogManager.GetLogger(typeof (MyClass));
Run Code Online (Sandbox Code Playgroud)

不仅在C#中,而且我看到了同样的另一种语言......有什么想法吗?

c# java actionscript-3

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

Castle Windsor按公约注册 - 如何根据实体注册通用存储库?

这应该是一个普遍的问题,我已经搜索但是还没有找到任何解决方案,如果它是一个骗局,请指出我适当的链接.

所以,我有一个通用的存储库来支持几个entites,我暂时注册它如下:

public class ExpensiveServiceInstaller : IWindsorInstaller
{
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        Register<EntityA>(container);
        Register<EntityB>(container);
        //etc etc 
        //when there is a new one should register it manually
    }

    void Register<T>(IWindsorContainer container) where T : Entity
    {
        container.Register(Component.For<IRepository<T>>()
            .ImplementedBy<Repository<T>>()
            .LifeStyle.Transient);
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:
位于Repositories命名空间
上的存储库位于命名空间上的实体Entities,包括Entity所有实体的基类

它工作正常,但我认为它应该是一种更好的方式,按惯例使用注册的更自动的方式,所以当我在我的项目中添加一个新实体时,windsor将自动识别它,并为它注册存储库.还有一个问题,如何忽略Entity(基类)所以它没有在容器上注册.

问候

c# castle-windsor castle

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

linkWithCredential 如何工作?它如何与规则一起工作?

我发现这个文档解释了如何将匿名用户与新注册用户联系起来,但我不明白它是如何工作的。

这里也找到的解释中,我得到了如下的大图(如果我错了,请纠正我):

  1. 匿名用户登录:获得 userUid(仅举例) ANONYM-USER-UID
  2. 用户将数据添加到购物车,如下所示:

数据

-- shoppingCart
    -- ANONYM-USER-UID
       -- <push-id>
          -- itemUid: <item-uid>
          -- count: 2
       -- <push-id>
          -- itemUid: <other-item-uid>
          -- count: 1
    -- OTHER-USER-UID
       -- .......
Run Code Online (Sandbox Code Playgroud)

规则:只有合适的 UserId 才能访问购物车

"rules": {
   "shoppingCart" {
       "$userUid": {
            ".read": "auth.uid == $userUid"
       }
   }
}
Run Code Online (Sandbox Code Playgroud)
  1. 在结帐之前,用户“强制”注册/或登录,AuthCredential然后检索然后linkWithCredential调用。例如,用户比使用新的 userUIDREGISTERED-USER-UID

问题是,每当客户端代码查询shoppingCart/REGISTERED-USER-UID时,它都会检索shoppingCart/ANONYM-USER-UID? 规则会允许吗?

如果应用更复杂的规则会怎样,例如,规则变为 -只有适当的 UserId 可以访问购物车,但 userUid 不能在 blackList child 中

"rules": { …
Run Code Online (Sandbox Code Playgroud)

android firebase firebase-security firebase-authentication

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