小编gre*_*man的帖子

是否在D中间接访问对象?

正如我所读到的,D中的所有对象都是完全独立的.如何实现这一要求?

我想到的一件事是,所有引用都不是指向对象的指针,而是指向某些代理,因此当您移动对象(在内存中)时,您只需更新该代理,而不是程序中使用的所有引用.

但这只是我的猜测.它是如何在D中完成的?

d object

4
推荐指数
1
解决办法
75
查看次数

如何获取用户是否登录的最新信息?

在这种特殊情况下,我只对获取用户是否登录的信息感兴趣。

按照答案如何根据用户是否登录来启用/禁用元素?我可以获取此信息,但有一个奇怪的问题。

我使用 Blazor 演示应用程序,它在顶部显示提供的“LoginDisplay.razor”组件,我自己的页面使用以下代码:

@code {
  protected override async Task OnInitializedAsync()
  {
      Console.WriteLine("Init");

      var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
      var authenticated = authState.User.Identity?.IsAuthenticated ?? false;

      Console.WriteLine($"We are {authenticated}");
  }
}
Run Code Online (Sandbox Code Playgroud)

我使用这个应用程序时分为三个步骤:

  1. 我启动应用程序,我没有登录,“LoginDisplay”显示“登录”提示,我的代码打印我没有经过身份验证 - 很好

  2. 我点击“登录”,登录,我被重定向回我的页面 - “LoginDisplay”现在显示我的名字,但我的代码仍然打印我没有经过身份验证(使用“NavMenu.razor”时会发生这种不正确的打印输出)但使用“Index.razor”时没问题——请参阅下面的更新)

  3. 我按 F5(重新加载页面)——“LoginDisplay”显示我的名字,代码打印出我已通过身份验证——正如预期的那样

所以步骤(2)是有问题的——我应该获取我登录的信息(因为我就是),显然“LoginDisplay”能够实现这个事实。那么我应该在代码中添加什么逻辑才能显示我已登录?

更新@enet 回复后,我意识到步骤 (2) 的结果取决于您放置此代码的位置 - 如果在登录打印输出后立即将其放置在“NavMenu.razor”中,则表明您未获得授权。当我将相同的代码放入“Index.razor”(主页)时,打印输出正确地表明我已登录。

我可以看到渲染“NavMenu”几乎是立即的,而“Index”是在暂停一段时间后渲染的。所以问题更多是“无论使用页面如何获取新的身份验证信息?”。

authentication blazor blazor-webassembly

4
推荐指数
1
解决办法
3756
查看次数

如何从命令行运行已编译的 blazor Web 客户端?

假设我有经典的 blazor 项目——服务器、客户端和共享项目。我可以在 VS 2019 中将服务器设置为启动项目并运行它(它将运行服务器)。或者我可以将客户端设置为启动项目并运行它(它将运行客户端)。到目前为止,一切都很好。

我可以切换到命令行,导航到服务器的“bin”文件夹并执行“dotnet WebBlazor.Server.dll”,服务器将按我的预期运行。

但是当我导航到客户端文件夹时,我可以看到 dll 被放置在两个位置——“wwwroot”文件夹旁边和“wwwroot/_framework”文件夹以及其他 dll 内。当我尝试执行“dotnet WebBlazor.Client.dll”(在两个提到的地方)时,我收到错误消息,指出没有 WebBlazor.Client.deps.json 这样的文件。并且还缺少“hostpolicy.dll”库。

进一步的错误消息引导我做出两个选择:我应该将 Web 客户端作为独立应用程序或依赖于框架的应用程序运行。我想做的就是运行客户端——如果我没记错的话,在服务器情况下,Kestrel 会自动运行,并在我编写的服务器代码之上运行。我假设客户端也是如此,所以我想在 CLI 中运行它,因为 VS 能够运行它。

我还没有发布我的应用程序,我只想从 CLI 运行编译的二进制文件。

c# command-line blazor blazor-webassembly

4
推荐指数
1
解决办法
1541
查看次数

类型名称在哪里定义?

当您获得变量的类型时,您可以检查其名称:

if (my_type.Name=="Int32")
Run Code Online (Sandbox Code Playgroud)

但是写起来会更优雅

if (my_type.Name==TypeNames.Int32)
Run Code Online (Sandbox Code Playgroud)

避免错别字.我可以自己定义这样的类,但也许已经定义了某个地方?

如果是的话,在哪里?


注意:请避免想知道"为什么你想首先得到变量的类型","最好使用'是'"等.非常感谢你!


编辑:同时,我跳到结论,它足以忽略对象的类型(my_type变量)并检查对象.换句话说,my_type不是必需的.我忘记了空案例:-(更少的代码,更多的睡眠,这就是我需要的东西;-)

c# types

3
推荐指数
1
解决办法
113
查看次数

为什么纯IEnumerable的内容对于WPF DataGrid是不可见的?

假设我有一个带有itemsource绑定到属性Collection的datagrid,例如IEnumerable.当然我为它写了适当的getter和setter.

现在,当我分配给这个属性(Collection)时只是IEnumerable(作为某种方法的结果),如:

Collection = FooMethod(); // FooMethod returns IEnumerable<MyClass>
Run Code Online (Sandbox Code Playgroud)

datagrid将显示空行.行的计数将与Collection的计数匹配.

但当我强制转换时,像这样:

Collection = FooMethodp().ToArray(); // forced fetching data
Run Code Online (Sandbox Code Playgroud)

datagrid现在将显示包含内容的所有行.

那么什么阻止数据网格在纯IEnumerable的情况下显示数据呢?它必须迭代一个集合,所以无论如何都要进行提取.

编辑

仅供记录.MyClass是这样的:

public class ErrorsIndicators
{
    public double Min { get; set; }
    public double Max { get; set; }
    public double Avg { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

和FooMethod返回(返回yield)几个项目.所以,这里没什么特别的.

c# data-binding wpf ienumerable datagrid

3
推荐指数
1
解决办法
3145
查看次数

调试时如何在 Visual Studio 中检查“这个”对象?

当你调试你的程序时,例如你在这里设置一个断点:

void foo(string s)
{
  (*) if (s=="bar")
  ...
}
Run Code Online (Sandbox Code Playgroud)

(*) 表示断点

您可以将鼠标光标移到“s”上并检查其内容。

问题是如何做同样的事情(即检查对象)而不是任何参数或变量,而是“这个”对象?

我的情况:我在某个时候遇到异常,我跟踪调用堆栈,假设我想检查调用堆栈的第四个方法的“this”对象(例如)。

debugging visual-studio

3
推荐指数
1
解决办法
3996
查看次数

如何在Scala中访问泛型类型的别名?

即我想为枚举编写自己的valueOf,因为现在Scala设计者已经删除了这个方法(奇怪的调用 - https://issues.scala-lang.org/browse/SI-4571).

def valueOf[E <: Enumeration](s : String) =
           E#Value.values.filter(it => it.toString==s).single()
Run Code Online (Sandbox Code Playgroud)

不要太注意单一,它只是像Linq一样的包装器(参见:Scala中IEnumerable LINQ等价物的图表?).

问题在于E#Value.

如何正确访问此别名,即如何访问泛型类型的别名?把这个Enum作为例子!

有withName方法,即使它被认为是替换它被设计破坏,值也不是名称,所以我不会用它来避免进一步混淆代码正在做什么.

generics alias types scala

3
推荐指数
1
解决办法
596
查看次数

Scala替换正则表达式中占位符的语法是什么?

所以我可以写:

val res = """(\d*).*""".r.replaceAllIn(s,"""\1""")
Run Code Online (Sandbox Code Playgroud)

到目前为止,我得到文字"1"而不是被捕获的组.

先感谢您.

regex replace scala placeholder

3
推荐指数
1
解决办法
524
查看次数

Matlab/Octave是否支持对矩阵切片进行操作?

我是Octave/Matlab的新手,所以到目前为止我知道,你可以应用矩阵运算(如*)或单元格操作(如.*).

现在我遇到了这两种模式之间的问题.

例如(这只是例子)我有一个矩阵(10,10)和一个向量(10,1).我想在切片中使用这个矩阵(在这种情况下是列切片)并向它们添加向量.因此,向第一列添加向量,向第二列添加向量,....,向最后一列添加向量.并且在结果中获取矩阵(10,10)当然.

到目前为止,我提出了两种方法:

  1. 手动循环遍历列,并添加向量

  2. 重复向量,然后将整个重复的向量(所以现在它确实是矩阵)添加到矩阵

第二种方法使用矢量化方法,然而消耗大量内存,在第一种情况下,没有矢量化方法(手动循环),但内存不会过度使用.

问题 - 是否有一些不错的第三种方式切片模式?我可以说,将矩阵视为切片,向切片添加矢量,然后放下这样的视图,并照常处理矩阵?

matlab operators matrix octave slice

3
推荐指数
1
解决办法
1017
查看次数

如何使用Wicket在会话中存储用户数据?

我正在使用"Wicket in Action"一书学习Wicket.

我做了什么(安全跳过)

我想创建这样的工作流程:

  • 用户第一次打开页面 - 打印出"用户未登录"
  • 用户进入登录页面
  • 用户登录(成功)
  • 用户被重定向到主页 - 打印出有关用户的信息

这一切都在书中描述,理论上看起来还不错.有一个用于用户数据(UserData)的类,并且有一个用于MySession保存用户数据的类session().会话在Wicket中创建MyWebApplication,newSession方法调用.

但结果是 - 它不起作用.

问题

成功登录后即删除用户数据.问题是创建会话:

  • 进入页面,再加上
  • 进入登录页面,再加上
  • 回到主页面

导致6个创建的会话.当然,每个新会话都会杀死前一个会话,并且会杀死所有数据.

问题:那么如何正确地在会话中存储用户数据,或者如何使会话像真实会话一样工作?

authentication session wicket

3
推荐指数
1
解决办法
4620
查看次数