Fir*_*oso 2 azure-service-fabric
在使用预览SDK之后,我注意到在尝试为我正在开发的框架使用的一组相关Actor类型提供通用实现时有一些令人惊讶的事情.
像下面这样创建代码似乎没有按预期工作:
图书馆:
public abstract class CommonActor : Actor, ICommonActor
{
public abstract void DoStuff();
}
Run Code Online (Sandbox Code Playgroud)
控制台应用:
public class MyActor : CommonActor
{
public void override DoStuff()
{
//Stuff
}
}
Run Code Online (Sandbox Code Playgroud)
在创建我的Actor时,我对注册actor的调用失败了.
fabricRuntime.RegisterActor(typeof(MyActor));
Run Code Online (Sandbox Code Playgroud)
我收到一个错误,该类型不是从Actor派生的,这显然是假的.
另外我注意到这似乎打破了生成服务清单的工具.(我必须通过禁用该工具来解决这个问题.)
这基本上阻止了我以我想要的方式为我的用户编写API.我完全不喜欢这样.与其他人报告的情况类似,这里对依赖注入方案几乎没有支持,对我而言极大地破坏了Actors模型的效用.
我错过了什么吗?这里有更好的方法来实现actor抽象吗?
只要使用ActorService装饰器显式命名子actor,就可以完成此操作.在你的例子中,这将转化为MyActor像这样更新类...
[ActorService(Name = "MyActor")] // Child actors need this decorator
public class MyActor : CommonActor
{
public void override DoStuff()
{
//Stuff
}
}
Run Code Online (Sandbox Code Playgroud)
Service Fabric文档中还提供了更多信息.
| 归档时间: |
|
| 查看次数: |
425 次 |
| 最近记录: |