- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在带有一些 Silverlight 组件的 ASP.Net 应用程序中使用 .Net RIA 服务的七月 CTP。我正在从 Silverlight 调用 RIA 服务。
当我尝试在我的领域服务(一个 LinqToEntitiesDomainService 对象)中使用 Unity 和构造函数依赖注入(inject)时,我的问题出现了。 Silverlight 应用程序现在提示没有无参数构造函数。
我不想有一个无参数的构造函数,我希望 Unity 解析构造函数参数。这可能吗?难道我做错了什么?或者我应该找到另一种方法来注入(inject)我的构造函数参数吗?
public class DashboardService : LinqToEntitiesDomainService<DashboardEntities>
{
private IUserService userService;
public DashboardService(IUserService userService)
: base()
{
if (userService == null)
{
throw ExceptionBuilder.ArgumentNull("userService");
}
this.userService = userService;
}
...
这是我遇到的错误:
Webpage error details
User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Timestamp: Tue, 18 Aug 2009 14:34:54 UTC
Message: Unhandled Error in Silverlight 2 Application No parameterless constructor defined for this object. at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)
at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at System.Web.DomainServices.DomainService.DefaultDomainServiceFactory.CreateDomainService(Type domainServiceType, DomainServiceContext context)
at System.Web.Ria.DataServiceFactory.GetDataService(HttpContext context)
at System.Web.Ria.DataServiceFactory.System.Web.IHttpHandlerFactory.GetHandler(HttpContext context, String requestType, String url, String pathTranslated)
Line: 1
Char: 1
Code: 0
URI: http://dev.localhost/Home
最佳答案
由于您有一个在其构造函数中带有参数的 DomainService,并且通常需要通过某种 IoC 容器或依赖项注入(inject)系统来构建,因此您需要提供一个应用级域服务工厂。然后,您的工厂负责实例化域服务(并处理它),它可以通过调用另一个 API(例如您的情况下的 Unity)来实现。
这是一个基本的例子:
在您应用的 Global.asax.cs 中,添加以下内容:
public class Global : HttpApplication {
static Global() {
DomainService.Factory = new MyAppDomainServiceFactory();
}
}
internal sealed class MyAppDomainServiceFactory : IDomainServiceFactory {
public DomainService CreateDomainService(Type domainServiceType,
DomainServiceContext context) {
DomainService ds = ... // code to create a service, or look it up
// from a container
if (ds != null) {
ds.Initialize(context);
}
return ds;
}
public void ReleaseDomainService(DomainService domainService) {
// any custom logic that must be run to dispose a domain service
domainService.Dispose();
}
}
希望对您有所帮助!
关于c# - .Net RIA 服务 : DomainService Needs a Parameterless Constructor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1294331/
我不能完全理解在什么情况下我会使用 DomainService 和在这种情况下你的文件不详细在这个问题上足够了。你能给出更详细的解释吗举个例子? 如果我只使用 ApplicationService 而
我正在使用域服务从 Silverlight 客户端的数据库中获取数据。 在 DomainService1.cs 中,我添加了以下内容: [EnableClientAccess()] public cl
我想要在我的域服务中使用类似于以下的方法: public SystemState GetSystemStatus() { return new SystemStatus {
我的 Silverlight 应用程序使用 RIA Web 服务与使用 Entity Framework 模型的 DomainService 进行交互。 在服务中我有一些简单的东西,比如: Publi
假设您创建了一个 RIA DomainService 并在其中包含一个 Person(如下所示)实体,您可以访问该对象上的聚合实体吗? 例如,如果我有这样的实体(请记住,这是一种天真的表示,它们是通过
我收到这个错误,但真的不知道如何解决: The element 'system.serviceModel' has invalid child element 'domainServices'. Li
我正在开发 Silverlight 4.0 应用程序并使用 RIA 服务。我在服务器端创建了一个类,其中应用了 DataContract 和 DataMember 属性。 DomainService
我在本地环境中加载了一个应用程序。这是我继承的代码库,根本没有让它工作。此时,当我在浏览器中导航到“http://test.myapp.com:75/”时,收到以下错误: 描述:处理此请求所需的配置文
谁能给我指出一个示例或简要描述如何使用 Linq to SQL 作为数据访问层但创建 WCF RIA Services DomainService 的自定义实现使用 .dbml 文件(这是因为 Lin
我正在尝试使用 RIA 服务,我安装了 Silverlight 4 和 Silverlight 4 Tools/SDK,但我无法设置 LINQToEntitiesDomainService,因为我找不
在 RIA 域服务中,我添加了一些实用功能。比如我们有... public virtual CmsDealer GetCmsDealerById(string id) { return thi
我使用 Invoke 属性从我的 SL ViewModel 调用了这个 DomainService 方法: [Invoke] public ServiceModel.Recipy GetRecipyB
我在带有一些 Silverlight 组件的 ASP.Net 应用程序中使用 .Net RIA 服务的七月 CTP。我正在从 Silverlight 调用 RIA 服务。 当我尝试在我的领域服务(一个
我有一个带有多个对象和 RestfulServices 的 apache ISIS 网络应用程序。出于记录目的,我需要请求本身的一些信息,而不仅仅是应该发送的参数。我如何访问这些请求 header 信
这是一个有趣的问题,我希望有人能帮忙解决。 我有一个包含以下查询的 DomainService 类: [Query] public IEnumerable GetBatchResult
我是一名优秀的程序员,十分优秀!