- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
所以我目前有一个主 DAO 类 ITrackingToolDAO,它包含我的每个业务实体的所有服务契约(Contract)。
public partial interface ITrackingToolDAO {
void Open(string connectionString);
void Close();
IBusinessFunctionDAO BusinessFunction { get; }
IBusinessUnitDAO BusinessUnit { get; }
IProgramBudgetDAO ProgramBudget { get; }
IProjectDAO Project { get; }
...
}
我的服务契约(Contract)看起来是这样的
[ServiceContract(Namespace="http://bmgops.qintra.com/Tracking/v1/BusinessFunction")]
public partial interface IBusinessFunctionDAO {
[OperationContract]
BusinessFunction GetBusinessFunction(Int32 businessFunctionId);
[OperationContract]
IEnumerable<BusinessFunction> Find(string filter);
[OperationContract]
SaveEventArgs<BusinessFunction>Save(BusinessFunction businessFunction);
}
我目前有 2 个 ITrackingToolDAO 接口(interface)的具体实现。第一个是 TrackingToolSqlDAO,它为每个实体实例化一个具体的 SQL DAO。即)BusinessFunctionSqlDAO、ProjectSqlDAO 等
第二个是 TrackingToolWCFDao,它使用 ChannelFactory
现在,我想开始使用 Windsor WCF 工具而不是 CreateChannel。实现此目标的最佳方法是什么?
我正在考虑创建一个 ITrackingToolDAO 的虚拟实现,它在构造函数中接受一个 IKernel 参数。
public class DummyDAO: ITrackingToolDAO {
public DummyDAO(IKernel kernel) {
_ProjectDAO = kernel.Resolve<IProject>();
....
}
}
这样我就可以使用 WCF 工具来创建我的所有 channel 。我只是不喜欢它,因为它使用容器作为服务定位器,这是一种代码味道。理想情况下,如果我可以让我的 SQL DAO 和新的 WCF DAo 都在容器中注册,那么我也可以通过按名称引用它们来创建任何一个。
有什么想法吗?
最佳答案
如果您正在使用 CaSTLe.Facilities.WcfIntegration,您可以像这样设置您的 dao:
container.Register(Component.For<IProject>().ImplementedBy<Project>());
您可以像这样使用 WcfIntegration 工具:
container.AddFacility<WcfFacility>()
.Register(Castle.MicroKernel.Registration.Component.For<IBusinessFunctionDAO>()
.ImplementedBy<BusinessFunctionDAO>()
.AsWcfService());
对于 BusinessFunctionDAO,您可以像这样进行构造函数注入(inject):
public class BusinessFunctionDAO : IBusinessFunctionDAO
{
public BusinessFunctionDAO(IProject project)
{
if (project== null) new ArgumentException("project");
_project = project;
}
...
private readonly IProject _project;
}
关于c# - 温莎 WCF 设施工厂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3992051/
所以我目前有一个主 DAO 类 ITrackingToolDAO,它包含我的每个业务实体的所有服务契约(Contract)。 public partial interface ITrackingToo
您好,已将以下组件注册到 CaSTLe Windsor 中: public class CommandDispatcher : IServiceCommandDispatcher { priv
我刚刚下载了动态对象框架Clay我遇到了关于 castle project 的问题版本。 Clay 使用“城堡”v2.0 的功能,而我有一个项目已经开始引用 v2.5。不用说只是为了让事情更有趣,我是
我在将 CaSTLe Windsor Controller Factory 与新的 RenderAction 方法结合使用时遇到了问题。我收到以下错误消息: Controller “MyControl
我试图让 Windsor 为每个请求提供一个实例 ISession,它应该被注入(inject)到所有存储库中 这是我的容器设置 container.AddFacility().Register(
我一直在尝试配置 Windsor 以根据正在构建的类为服务提供不同的实现: 我读过这个 http://docs.castleproject.org/Windsor.Registering-compon
我正在查看 ProDiner 示例 MVC 项目。我将 CaSTLe Windsor 引用从 2 更新为 3。 public static void RegisterAllFromAssemblies
我们在 Windsor 容器上使用 NoTrackingReleasePolicy,因为当我们在使用后不释放我们的组件时会发生内存泄漏。现在考虑以下问题。 一些一次性组件: public class
我是一名优秀的程序员,十分优秀!