我在C ++中使用多重继承,并通过显式调用基本方法来扩展基本方法。假定以下层次结构:
Creature
/ \
Swimmer Flier
\ /
Duck
Run Code Online (Sandbox Code Playgroud)
对应于
Creature
/ \
Swimmer Flier
\ /
Duck
Run Code Online (Sandbox Code Playgroud)
现在,这带来了一个问题-调用duck的print方法将调用其各自的基本方法,所有这些方法都依次调用该Creature::print()方法,因此最终被两次调用-
I'm a creature
I can fly
I'm a creature
I can swim
I'm a duck
Run Code Online (Sandbox Code Playgroud)
我想找到一种方法来确保基本方法仅被调用一次。与虚拟继承的工作方式类似(在第一次调用时调用基本构造函数,然后仅在来自其他派生类的后续调用中为其分配一个指针)。
是否有一些内置方法可以做到这一点,还是我们需要依靠自己实现?
如果是这样,您将如何处理?
这个问题并非特定于打印。我想知道是否有一种机制可以扩展基本方法和功能,同时保持调用顺序并避免出现钻石问题。
我现在知道,最突出的解决方案是添加辅助方法,但是我只是想知道是否存在“更清洁”的方法。
我正在将C#Web-Api与作为Windows服务托管的Owin一起使用,以公开读卡器实用程序。
我正在尝试使用服务器发送事件。客户端发送一个打开流的请求,并且我想在关闭流时执行逻辑(即用户关闭浏览器或调用eventSource.close())
看起来像这样:
public class CardReaderController: ApiController
{
static ConcurrentDictionary<int, Connection> connections = new ConcurrentDictionary<int, Connection>();
static CardReader cardReader = CardReader.Instance;
CardReaderController()
{
cardReader.OnCardRead += OnCardRead;
}
static void OnDisconnect(int id)
{
connections.TryRemove(id, out var connection);
connection.Writer.Close();
}
static void OnCardRead(string cardData)
{
foreach(var connection in connections.Values)
connection.Writer.WriteLine("data: " + cardData + "\n")
}
[HttpGet]
public HttpResponseMessage Events(CancellationToken onDisconnect)
{
...
int id = Request.GetHashCode();
var response = Request.CreateResponse();
onDisconnect.Register(() => OnDisconnect(id));
Response.Content = new PushStreamContent((stream, content, context) …Run Code Online (Sandbox Code Playgroud) c# asynchronous server-sent-events asp.net-web-api cancellation-token
我已经看到了这个使用 css 制作动画星星背景的例子,并注意到在这种情况下编译的 css 明显更小,因为 sass 在循环中生成了一千颗星星。
// n is number of stars required
@function multiple-box-shadow ($n)
$value: '#{random(2000)}px #{random(2000)}px #FFF'
@for $i from 2 through $n
$value: '#{$value} , #{random(2000)}px #{random(2000)}px #FFF'
@return unquote($value)
Run Code Online (Sandbox Code Playgroud)
这让我想知道,有没有办法在客户端生成上述 css?网络带宽的节省会不会超过生成 css 的(微乎其微的)成本?
我找不到这种用例的示例,网络流量的压缩是否使这无关紧要?
我不一定要专门询问这个案例。更多关于带宽与计算时间的考虑(如果有的话)。对于ngFor在客户端使用更简洁的语法(如在 Angular 中)生成 HTML 的 js 框架,也可以这样说。