- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个接口(interface)和一个类,我想为其创建实例:
public interface IFoo
{
void Frob();
}
public class Foo : IFoo
{
public Foo(string key)
{
}
}
Foo 类有一个 string key
参数,它在运行时是未知的。我为此创建了一个委托(delegate)工厂:
public delegate IFoo FooFactory(string key);
我想注册 Foo
以便它具有 SingleInstance 范围,但我希望它是基于 key 参数的 SingleInstance。
var foo1 = fooFactory("abc"); // new instance
var foo2 = fooFactory("abc"); // same instance as foo2
var foo3 = fooFactory("def"); // new instance
var foo4 = fooFactory("def"); // same instance as foo4
我可以用 Autofac 做到这一点吗?
最佳答案
您可以创建一个工厂类,它将根据参数创建实例。
public class FooFactory : IFooFactory
{
public delegate IFoo FooBuilder(String key);
public FooFactory(FooBuilder fooBuilder)
{
this._fooBuilder = fooBuilder;
this._foos = new ConcurrentDictionary<String, IFoo>();
}
private readonly FooBuilder _fooBuilder;
private readonly ConcurrentDictionary<String, IFoo> _foos;
public IFoo Get(String key)
{
IFoo foo = this._foos.GetOrAdd(key, k => this._fooBuilder(k));
return foo;
}
}
然后像这样注册:
builder.RegisterType<Foo>()
.As<IFoo>();
builder.RegisterType<FooFactory>()
.As<IFooFactory>()
.SingleInstance();
builder.Register<Func<String, IFoo>>(c => c.Resolve<IFooFactory>().Get)
.As<Func<String, IFoo>>();
然后解析得到一个IFoo
你可以依靠 Func<String, IFoo>
c.Resolve<Func<String, IFoo>>()("a");
关于c# - 根据参数使用 SingleInstance 委托(delegate)工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37869295/
我想知道 singleInstance Activity 的默认任务关联是什么? 因为每个 singleInstance Activity 在新任务中作为根 Activity 打开。并且无需声明 an
我的应用程序中有 2 个 Activity 。 A Activity 是启动器 Activity 。当我第一次运行应用程序时,启动器 Activity 会运行,但是当我按下主页按钮并通过单击应用程序图
我试图更改 Activity 转换的默认动画,但我遇到了一个问题。 我可以更改正常 Activity 的动画,但是当我将启动模式更改为 singleInstance 时,我第一次打开 Activity
可能重复 Deep linking and multiple app instances .我在我的应用程序中实现了深度链接。我有作为启动器的 Splash Activity 和处理 list 中定义
据我所知,startActivityForResult 无法与 launchMode singleInstance 一起正常工作 here .而最近,我发现它在 Android Lollipop(5.
我有一个 Activity 在 list 中定义为: android:launchMode="singleInstance" 现在我想从一个不知道它存在(不引用现有实例)的不同 Activity 转
我有几个使用 launchMode SingleInstance 的 Activity 。注销时我想完成所有 Activity 并打开 launchScreen。 val intent = Inten
我有一个 Activity 显示列表中的多个元素,用户可以滚动浏览这些元素。除了浏览添加的新元素的列表之外,用户还可以单击弹出通知以立即转到该元素。我只希望运行列表的一个实例,所以我将其设为 Sing
一个 Activity 是一个单一的实例 Activity 。 import android.app.Activity; import android.content.Intent; import a
一个Activity有四种启动模式,standard、singletop、singletask和singleInstance。前三者比较容易理解,应用广泛。但是到现在为止,我没有发现任何使用singl
我想知道是否可以在启动 singleInstance Activity 时取消所有动画,我已经在用了 @Override public void onStop() { super.onStop
我已经阅读了谷歌 Android 开发者页面,但任务的概念 ( http://developer.android.com/guide/components/tasks-and-back-stack.h
我在我的应用程序中使用了 android:launchMode="singleInstance" 如何在 android api 2.3.3 中完美编译和运行但是当我在基于api 4.0 的andro
我遇到了一个有趣的问题,一个 Activity 被创建了多次,即使它在 list 中被定义为一个 singleTask 或一个 singelInstance Activity。这是如何重现的。比如说,
我在为不同的 Activity 实现不同类型的启动模式时遇到了设计问题。我有 5 个 Activity 。 视频列表 视频详情 收藏夹列表 视频搜索 视频播放器 当用户启动应用程序时,它会转到显示视频
我的应用程序包含多个 Activity ,主要 Activity (A) 处于 launchMode singleTop,每个 Activity 都处于 singleInstance 模式。 我选择了
我正在寻找何时使用 launchMode="singleInstance" 的具体示例。我到处阅读,据说很少有场合应该使用它。所以我很惊讶我从来没有看到例子! 我找到的最接近的解释是 here它说:
IProductRepositoryProxy ProductDataServiceProviderInstance = new ServiceProductDataProvider(); build
我在 StackOverflow 上没有找到任何可以回答我问题的帖子。我已经看过了Android singletop singleinstance and singletask但这个问题和他的项目场景
关闭。这个问题是opinion-based .它目前不接受答案。 关闭3年前. 锁定。这个问题及其答案是locked因为这个问题是题外话,但具有历史意义。它目前不接受新的答案或交互。 我有一个应用程序
我是一名优秀的程序员,十分优秀!