小编jsm*_*ars的帖子

可以混合对象初始化器和集合初始化器吗?

我按照此处的说明使用IEnumerable定义了一个集合初始化程序:http: //msdn.microsoft.com/en-us/library/bb384062.aspx

现在,我可以在我的集合初始化程序中创建对象,并使用我的Add()方法添加它们,如下所示:

class ArrangedPanel : RectElement
{
    private List<RectElement> arrangedChildren = new List<RectElement>();
    public int Padding = 2;

    public void Add(RectElement element)
    {
        arrangedChildren.Add(element);
        //do custom stuff here
    }

    public IEnumerator GetEnumerator()
    {
        return arrangedChildren.GetEnumerator();
    }
}

// Somewhere
debugPanel.Add(new ArrangedPanel() 
{ 
    new ButtonToggle(),
    new ButtonToggle()
});
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试设置属性,例如我的"填充"字段,我会在集合初始值设定项上出错.

debugPanel.Add(new ArrangedPanel() 
{ 
    Padding = 5,
    new ButtonToggle(),
    new ButtonToggle()
});
Run Code Online (Sandbox Code Playgroud)

是否可以设置集合初始化器和对象初始化器?

c# ienumerable initialization

14
推荐指数
2
解决办法
2111
查看次数

在Visual Studio Post-build事件中删除整个文件夹

我正在尝试使用以下命令行删除输出目录中的文件夹:

del /F "$(TargetDir)Content\"
Run Code Online (Sandbox Code Playgroud)

我总是最终退出错误代码1.我尝试了几种不同的方式,没有/ F,前后都有/没有斜线等.

Error   1   The command "del /F "E:\proj\bin\Windows\Debug\Content\"" exited with code 1.
Run Code Online (Sandbox Code Playgroud)

关于在visual studio中的后期构建事件命令行中删除文件有很多问题,它工作正常,但我似乎无法删除文件夹而不获取代码1.

任何帮助表示赞赏!

visual-studio-2010 post-build-event visual-studio

10
推荐指数
1
解决办法
8712
查看次数

如何在 Blazor 中获取客户端 IP 和浏览器信息?

如何在 Blazor 服务器端获取客户端信息,例如 IP 地址和浏览器名称/版本?

blazor blazor-server-side

10
推荐指数
5
解决办法
8049
查看次数

如何在 @code 块中编写 Blazor HTML 代码?

如何在@code块内的函数中编写 Blazor HTML 代码?

考虑以下代码:

@page "/Test"

@if (option == 1)
{
    drawSomething("Something");
}
else
{
    drawSomething("Something else");
}

@code {
    int option;

    void drawSomething(string message)
    {
        <p>message</p>
    }
}
Run Code Online (Sandbox Code Playgroud)

在我尝试构建之前它不会产生任何错误,然后它给了我以下错误:

错误 CS0103 当前上下文中不存在名称“__builder”

在 ( Test.razor.g.cs) 中的行:

__builder.AddContent(0, "        ");
__builder.AddMarkupContent(1, "<p>message</p>\r\n");
Run Code Online (Sandbox Code Playgroud)

如果这意味着 Blazor HTML 代码只能写入文件的第一部分,而不能写入函数或类中,这似乎非常有限。

我使用的是编写3.0.100-preview9-014004blazor版本 ( ) 时的最新版本。

注意:给定示例中的输出高度简化,我想知道我是否以及如何从函数中编写代码,而不是以更好的方式解决上面的输出。

c# blazor blazor-server-side

8
推荐指数
2
解决办法
5440
查看次数

将渐变文本与Chrome中的删除线/直通线结合使用

我在CSS中有一个渐变文本,我也希望能够在其中有一个删除线.这在Firefox中运行良好,但遗憾的是在Chrome中没有.任何人都知道如何在两种浏览器中使用它?

小提琴

.gradienttext {
    background: -webkit-linear-gradient(#fff, #999);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
}

.strike {
    text-decoration: line-through;
}

<p class="gradienttext">
    Does <span="strike">not</span> work.
</p>
Run Code Online (Sandbox Code Playgroud)

html css

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

创建具有未知参数和返回类型的委托

我正在尝试创建一个方法,该方法返回给定类型的委托,其中主体运行函数中指定的某些代码。IE

    public Delegate GenerateDelegate(Type delegateType)
    {
        // create a delegate of type 'Type'
        // specify the code of this delegate
        // return the delegate object
    }
Run Code Online (Sandbox Code Playgroud)

如果我事先知道类型,或者至少是参数和返回类型,我显然可以只返回该类型的委托,匿名委托,以及我想要的任何代码。但是,问题是我希望它适用于几乎任何类型的非通用委托,并且我希望能够利用委托类型具有的参数,并返回正确的类型。

我查看了使用ILGenerator.Emit()CodeDOM来实现此目的的不同选项。但是,我可能想在返回的委托中做一些非常复杂的事情,并且希望能够直接在 C# 中进行编码,因为我不确定我是否可以使用 IL 或CodeDOM实现这一点。作为伪解决方案,与Delegate.DynamicInvoke(params object[])可以采用匿名参数一样,我想我希望能够做这样的事情。

    public Delegate GenerateDelegate(Type delegateType)
    {
        return Delegate.CreateDelegate(delegateType, GetType().GetMethod("RunEvent"));
    }

    public static object RunEvent(params object[] parameters)
    {
        // some specified code, depending on contents of parameters
        return null;
    }
Run Code Online (Sandbox Code Playgroud)

所述RunEvent()可以采取任何数量的参数作为对象阵列,并且返回对象。可悲的是,这不起作用并引发以下异常:

无法绑定到目标方法,因为其签名或安全透明度与委托类型的签名或安全透明度不兼容。

不知何故,我认为对象数组参数应该与委托可能具有的任何参数组合兼容,但返回类型是一个对象,可能会返回一些与给定的delegateType不兼容的对象,或者如果delegateType返回 void。这可能会导致一些问题。

对于我自己的用法,我知道运行时的所有参数和返回类型,并且可以检查这一点以确保一切都是安全的。有什么办法可以让我这样工作吗?

c# delegates

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

如何在 Blazor 中正确嵌入 &lt;iframe&gt;?(YouTube)

<iframe>在我的 Blazor 页面上使用容器的标准 youtube 嵌入视频无法正确加载。什么都没有加载。

<iframe width='560' height='315' src='https://www.youtube.com/embed/m8e-FF8MsqU' frameborder='0' allow='accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture' allowfullscreen></iframe>
Run Code Online (Sandbox Code Playgroud)

在我的页面中,链接实际上是与@video链接链接的,但结果是相同的。

<iframe width='560' height='315' src='https://www.youtube.com/embed/@video' frameborder='0' allow='accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture' allowfullscreen></iframe>
Run Code Online (Sandbox Code Playgroud)

查看源代码,<html>#document.

<html><head></head><body></body><link type="text/css" id="dark-mode" rel="stylesheet"><style type="text/css" id="dark-mode-custom-style"></style></html>
Run Code Online (Sandbox Code Playgroud)

而在普通的 HTML 页面中,结构充满了来自 Youtube 的内容。(缩短)

<!DOCTYPE html>  <html lang="en" dir="ltr" data-cast-api-enabled="true">
<head><meta name="viewport" content="width=device-width, initial-scale=1"><style name="www-roboto" >@font-face{font-family:'Roboto';font-style:italic;font-weight:500;src:local('Roboto Medium Italic'),local('Roboto-MediumItalic'),url(//fonts.gstatic.com/s/roboto/v18/KFOjCnqEu92Fr1Mu51S7ACc3CsTKlA.woff2)format('woff2');unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;}
Run Code Online (Sandbox Code Playgroud)

如何正确嵌入 以便它在 Blazor 中按预期工作?

c# blazor blazor-server-side

4
推荐指数
2
解决办法
7256
查看次数

使用 Blazor 读取服务器端文件

我有一个基于 Blazor 示例的项目.Client,其中包含,.Server.Shared项目。我data.txt在服务器上有一个文本文件,我希望能够使用标准StreamReader/System.IO.File方法读/写。由于 Blazor 在沙箱中运行,我想我无法像在普通 Windows 应用程序中那样访问整个文件系统?我已将文件放在wwwroot目录中,如果url/data.txt在浏览器中输入,我什至可以从客户端访问该文件,以便提供文件,我不想这样,但尝试读取该文件:

var file = File.ReadAllText("data.txt");
Run Code Online (Sandbox Code Playgroud)

结果报错:

WASM: [System.IO.FileNotFoundException] Could not find file "/data.txt"
Run Code Online (Sandbox Code Playgroud)

如何读取服务器端文件并使它们对客户端隐藏?

c# web .net-core webassembly blazor

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

Intellisense窗口有输入字段,不提交空间

突然之间,我在VS2010 Express中的intellisense窗口有一个输入字段,它正是我正在输入的内容.这不会打扰我,除了现在空间没有提交intellisense给我的选择选择.

另请注意,Tools-Options-Text Editor-C#-IntelliSense中的选项确实已选中"通过按空格键进行选择",但它不起作用.

在此输入图像描述

c# intellisense visual-studio-2010 visual-studio

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

如何从 PDF 中读取日文字符?

我在 C# 中使用 IText7 解析包含日语字符的 PDF 文件,如下所示:

    public static string ExtractTextFromPDF(string filePath)
    {
        var pdfReader = new PdfReader(filePath);
        var pdfDoc = new PdfDocument(pdfReader);
        var sb = new StringBuilder();
        for (int page = 1; page <= pdfDoc.GetNumberOfPages(); page++)
        {
            var strategy = new SimpleTextExtractionStrategy();
            sb.Append(PdfTextExtractor.GetTextFromPage(pdfDoc.GetPage(page), strategy));
        }
        pdfDoc.Close();
        pdfReader.Close();
        return sb.ToString();
    }
Run Code Online (Sandbox Code Playgroud)

但我遇到了异常:

iText.IO.IOException: '未找到 CMap iText.IO.Font.Cmap.UniJIS-UTF16-H。'

我已经四处寻找有关如何添加它的解决方案,但我还没有想出任何适用于日语字符的方法。如果有任何其他更适合的图书馆也可以。有什么帮助吗?

谢谢

c# pdf unicode itext itext7

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

一个List <T>中包含多个接口

有没有办法在像List这样的泛型类中定义类型,以包含只实现多个接口的对象?可能是类类型接口.

例如:

List<myObjectBase, IDisposable, IClonable> myList;
Run Code Online (Sandbox Code Playgroud)

c# generics inheritance interface generic-list

0
推荐指数
1
解决办法
2306
查看次数

是否可以将所有字符串默认为C#6.0插值字符串串联?

我发现自己$"Hello {name} {lastName}!"经常在代码中使用C#6.0插值字符串连接样式。

我知道引入此方法时,它需要一种单独的语法来不破坏任何以前包含{}符号的字符串。但是,在创建新项目时,我不介意编写,{{或者}}在极少数情况下,我需要字符串中的实际符号。当然,要添加一个多余的东西并不多$,但是当我发现自己对大多数琴弦都这样做时,我宁愿在可能的情况下省略它。

我想要今天的"Hello {name} {lastName}!"结果"Hello John Doe" just as $"Hello {name} {lastName}!"

如何使编译器默认将所有字符串视为插值字符串?

.net c# string concatenation c#-6.0

0
推荐指数
1
解决办法
62
查看次数