小编Pat*_*ski的帖子

如何在WPF中使用Windows身份验证?

我没有找到关于如何在WPF应用程序中使用Windows身份验证的文档.我不会认为它会与任何非WPF应用程序有任何不同,但它似乎是.我想进入我的项目属性 - >应用程序并确保Windows身份验证已启用,但该选项在WPF应用程序中不可用(如以下文档所示).

http://msdn.microsoft.com/en-us/library/tzdks800.aspx

如果我忽略所有这些并只看My.User.Name(VB),它就是空的.这告诉我,某些方式未启用Windows身份验证.

似乎有一个我缺少的概念; 有人能指出我正确的方向吗?

我的计划是使用PrincipalPermission属性来限制对我的应用程序的某些部分(或者可能是整个应用程序,通过将其应用于Application_Startup())的访问.

vb.net wpf windows-authentication

7
推荐指数
2
解决办法
1万
查看次数

为什么我在IDisposable类中使用私有成员IDispos获取CA2000?

我有一个实现IDisposable的类,因为它有一个私有成员字段"foo",它是IDisposable(在构造函数中初始化).我出乎意料地得到了CA2000代码分析错误,这要求我确保丢弃foo.但是,我在我的类的Dispose()代码中有foo.Dispose(),它应该处理这个问题.

我做了一些搜索,令人惊讶的是找不到答案.我究竟做错了什么?显然我遗漏了一些基本的东西.如何编写代码来克服这个问题?

我的VB代码:

Public Class Bar
    Implements IDisposable

    Private Foo As SomeDisposableThing

    Public Sub New()
        Foo = New SomeDisposableThing() With {.name = "hello"}
    End Sub

    '''' snip ''''

    Private disposedValue As Boolean = False        ' To detect redundant calls '

    Protected Overridable Sub Dispose(ByVal disposing As Boolean)
        If Not Me.disposedValue Then
            If disposing Then
                If Foo IsNot Nothing Then Foo.Dispose()
            End If
        End If
        Me.disposedValue = True
    End Sub

    Public Sub Dispose() Implements IDisposable.Dispose
        Dispose(True)
        GC.SuppressFinalize(Me)
    End Sub

End Class
Run Code Online (Sandbox Code Playgroud)

.net vb.net code-analysis fxcop

7
推荐指数
1
解决办法
793
查看次数

如何有效地编写WPF?

当我第一次了解微软当时用于开发桌面应用程序的新框架WPF时,我认为它的最大好处之一就是它的效率.毕竟,我已经知道我想要使用的GUI控件和元素是什么 - 我只需要在页面上将它们全部打开,然后将所有绑定连接起来,我就完成了.之后,我了解了MVVM模式,它承诺在我的WPF应用程序中清晰地分离关注点.

我以为这会很棒!我和我的团队在工作中创建了几个不同的管理和数据输入WPF应用程序,因此我开始使用强大但简单的GUI来制作工作软件,对吧?

不是那么快,那里,牛仔编码器.我的经验是写WPF很慢.

好吧,至少我这样做的方式.你看,在我在白板上画了我的GUI之后,我用我想要的控件编写了XAML代码.正如预期的那样,这部分很快 - 整个窗口的布局非常快.在那之后,你想要这些元素做的所有小东西需要一段时间.在某些情况下,我似乎总是想要使这个文字变得粗体; 在其他情况下显示一个红色错误框.

然后事情解开了:这个绑定在这里工作不正常 - 我必须编写一个转换器并调整正确值的布局.哎呀,我忘记了额外的NotifyPropertyChanged那里.哦,我想在这种状态下使用不同的模板,所以我必须弄清楚在某些情况下我可以使用什么来交换模板.这些数据是异步进入的,所以我需要确保在正确的线程上发生了正确的事情,并且Property也获得了NotifyChanged.废话,当我最大化我的窗口时,它不会像我想象的那样伸展 - 必须是因为它的容器高度没有定义,但我不想定义它,所以我必须让它伸展它的家长.哦,现在我真的想在这里让用户控制这些东西,所以我最好实现一些依赖属性...

我一次又一次地花费数小时和数日来处理那些感觉如此小而小的东西.我很快就会采用切割可用性功能和外观增强功能,因为这样做太长了.

有没有人有任何提示或原则我需要尝试才能有效地编写WPF?

wpf

7
推荐指数
1
解决办法
1568
查看次数

Visual Studio监视窗口图标代表什么?

Visual Studio中的每个监视窗口图标和叠加层代表什么?某个MSDN页面上有传说吗?

一些图标的示例

debugging visual-studio

7
推荐指数
3
解决办法
7247
查看次数

我的SSIS Web服务任务正在修改XML结果以省略父节点,是什么给出的?

我使用SSIS 2012 Web服务任务调用Web服务.HTTP调用返回的XML非常类似于:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <GetFooResponse xmlns="http://acme1234">
         <GetFooResult>
            <Foo FOOTYPE_CODE="2" FOOTYPE="Premium" FOO_CODE="11" FOONAME="example" ACTIVE_INACTIVE="A"/>
            <Foo FOOTYPE_CODE="1" FOOTYPE="Standard" FOO_CODE="12" FOONAME="example2" ACTIVE_INACTIVE="A"/>
         </GetFooResult>
      </GetFooResponse>
   </s:Body>
</s:Envelope>
Run Code Online (Sandbox Code Playgroud)

但是当我将结果XML存储在磁盘上的变量或文件中后在SSIS中调试时,我看到存储的XML是:

<?xml version="1.0" encoding="utf-16"?>
<GetFooResponse xmlns="http://acme1234">
    <Foo FOOTYPE_CODE="2" FOOTYPE="Premium" FOO_CODE="11" FOONAME="example" ACTIVE_INACTIVE="A"/>
    <Foo FOOTYPE_CODE="1" FOOTYPE="Standard" FOO_CODE="12" FOONAME="example2" ACTIVE_INACTIVE="A"/>
</GetFooResponse>
Run Code Online (Sandbox Code Playgroud)

我真的不知道这是怎么可能的 - SSIS如何剥离中间节点?我很好地剥离了外部SOAP元素,但GetFooResult去了哪里?结果,我的XSD不再正确; 除非我手动捏造XSD,否则我无法获得可用的SSIS包.

任何想法如何解决这个问题,以便SSIS Web服务任务导致从Web服务任务检索到相同的XML?

xml ssis web-services

7
推荐指数
0
解决办法
166
查看次数

为什么 Visual Studio 删除对新 .razor 文件的监视?

在 Visual Studio Professional 2019 和现在的 2022 年,在我的 Blazor 客户端的 .csproj 文件中,我在 ItemGroup 中有一行:

<Watch Include="**\*.razor;**\appsettings.*" />
Run Code Online (Sandbox Code Playgroud)

这样,每当我更改 .razor 文件时,dotnet watch run都会自动重建并重新启动 Web 服务器。伟大的。

但现在,每当我在项目中创建 .razor 文件(例如 Foo.razor)时,Visual Studio 都会毫无帮助地添加“删除”行,例如:

<Watch Remove="Components\Widgets\Foo.razor" />
Run Code Online (Sandbox Code Playgroud)

有时它还会添加以下内容:

<Content Remove="Components\Widgets\Foo.razor" />
Run Code Online (Sandbox Code Playgroud)

然后,我必须手动编辑 csproj 文件以删除这些行。为什么会这样,我该如何将其关闭?还是这里有更大的问题?一些搜索发现没有其他人处理这个问题;也许我的设置有问题?

(我在早期版本中看到了完全相同的行为。)提前致谢。

更新: 这个问题似乎相关,但它已关闭,没有修复任何内容。有人知道如何让它停止吗?

c# visual-studio asp.net-core blazor blazor-webassembly

7
推荐指数
1
解决办法
657
查看次数

如何设置 Swashbuckle 和 Swagger UI 以使用 Open ID Connect Discovery 进行授权,以便它可以提供正确的承载令牌?

如何设置 Swashbuckle 和 Swagger UI 以使用 Open ID Connect Discovery 进行授权(在我的例子中是 Azure AD)?

到目前为止,这是我的(未完全工作的)SwaggerGen 设置,基于/sf/answers/4630359751/

SwaggerGenOptions c => {
    OpenApiInfo apiInfo = new()  { /* ...snip... */ };
    c.SwaggerDoc("v1", apiInfo);
    IncludeXmlFileForSwagger(c);

    // Defines the Open ID Connect discovery scheme - see also /sf/answers/4630359751/
    OpenApiSecurityScheme mainScheme = new()
    {
        Type = SecuritySchemeType.OpenIdConnect,
        OpenIdConnectUrl = new Uri($"https://login.microsoftonline.com/{myTenantId}/.well-known/openid-configuration"),
    };
    c.AddSecurityDefinition("OpenIdConnect", mainScheme);

    // Adds a reference to the above scheme as required for every API action (we can get more nuanced later) …
Run Code Online (Sandbox Code Playgroud)

c# swagger swagger-ui openid-connect swashbuckle

7
推荐指数
1
解决办法
2842
查看次数

Visual Studio(转到全部)-如何忽略 bin 和 obj 文件夹

我想要转到全部 (Ctrl + ,) 以忽略 bin 和 obj 文件夹,或者至少忽略 .g.* 文件。我可以选择其中之一还是两者都做?

这是一张没有源代码控制的基本 UWP 应用的图片。bin 和 obj 文件夹已从解决方案中排除,但是,生成目录中的 .g 文件仍包含在“转到全部”的搜索中。

在此输入图像描述

c# visual-studio uwp

6
推荐指数
1
解决办法
881
查看次数

如何基于多态清晰地处理不同的行为

假设我有一个接口IFoo与实现类VideoFoo,AudioFooTextFoo.进一步假设我无法修改任何代码.假设我想编写一个基于运行时类型的函数IFoo,例如

Public Class Bar
    Public Shared Sub Fix(ByVal Foo as IFoo)
        If TypeOf Foo Is VideoFoo Then DoBar1()
        If TypeOf Foo Is AudioFoo Then DoBar2()
        If TypeOf Foo Is TextFoo Then DoBar3()

    End Sub
End Class
Run Code Online (Sandbox Code Playgroud)

我想重构这个以使用重载方法:

Sub DoBar(ByVal foo as VideoFoo)
Sub DoBar(ByVal foo as AudioFoo)
Sub DoBar(ByVal foo as TextFoo)
Run Code Online (Sandbox Code Playgroud)

但我认为做这样的事情的唯一方法就是写作

Sub DoBar(ByVal foo as IFoo)
Run Code Online (Sandbox Code Playgroud)

然后我必须再做一次"If TypeOf ...... Is".我怎样才能重构这个以利用实现的多态性IFoo而无需手动检查类型?

(在VB.NET中,虽然我的问题也适用于C#)

.net vb.net oop polymorphism

5
推荐指数
1
解决办法
346
查看次数

如何使用Vue立即显示元素,例如加载指示符?nextTick没有按照我的预期工作

当我在.vue文件中有一个带有数据成员isLoading: false和模板的Vue组件时:

<div v-show="isLoading" id="hey" ref="hey">Loading...</div>
<button @click="loadIt()">Load it</button>
Run Code Online (Sandbox Code Playgroud)

一个方法:

loadIt() {
  this.isLoading = true
  this.$nextTick(() => {
    console.log(this.$refs.hey)
    // ...other work here that causes other DOM changes
    this.isLoading = false
  })
}
Run Code Online (Sandbox Code Playgroud)

(这里的"加载"是指从内存中加载而不是AJAX请求.我想这样做,以便我可以在DOM更改时立即显示一个简单的"加载"指示,可能需要0.2-0.5秒左右正在发生.)

我认为该$nextTick函数将允许虚拟和实际DOM更新.控制台日志读取该项目已"显示"(删除display: none样式).但是,在Chrome和Firefox中,我从未看到"正在加载..."指示器; 发生短暂延迟,并且在没有显示加载指示符的情况下发生其他DOM更改.

如果我使用setTimeout而不是$nextTick,我将看到加载指示器,但仅当其他工作足够慢时.如果有十分之几秒的延迟,则加载指示器永远不会显示.我希望它能立即出现在点击中,以便我可以呈现一个快速的GUI.

小提琴中的例子

javascript vue.js

5
推荐指数
1
解决办法
696
查看次数