小编ord*_*dag的帖子

什么是System.Void?

我知道声明的方法void不会返回任何内容.

但似乎在C#void中只是一个关键字,而是一个真实的类型.
void是一个别名System.Void就像int那是System.Int32.

为什么我不允许使用那种类型? 它没有任何意义,但这只是对逻辑的一些想法.

也不

var nothing = new System.Void();
Run Code Online (Sandbox Code Playgroud)

(说我应该使用void(不是别名?))
也不是

var nothing = new void();
Run Code Online (Sandbox Code Playgroud)

编译.

也不可能使用这样的东西:

void GiveMeNothing() { }
void GiveMeNothingAgain()
{
    return GiveMeNothing();
}
Run Code Online (Sandbox Code Playgroud)

那么重点是什么System.Void

.net c# void

37
推荐指数
4
解决办法
7094
查看次数

为什么"typdef struct {struct S*s;} S;" 包含指向同一类型的指针编译?

我想typedef一个struct其中包含一个指向另一个相同类型的.

多数民众赞成我认为最好的版本:

typedef struct Element
{
    char value;
    struct Element *next;
} Element;
Run Code Online (Sandbox Code Playgroud)

为什么该变体也在编译+执行?:

typedef struct
{
    char value;
    struct Element *next;
} Element;
Run Code Online (Sandbox Code Playgroud)

为了描述第一个我会说:" struct Element Element现在名字",第二个:"匿名struct并称之为Element"

但为什么我仍然可以在第二种情况下声明struct Element (在结构内)

(在GCC和工作MSVC)

c struct typedef

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

WPF生成TextBlock内联

我有一个GridView和其中一个GridViewColumn想要生成这样的文本:

textBlock.Text = string.Format("{0} is doing {1} .......", a, b);
Run Code Online (Sandbox Code Playgroud)

ab (在视图中的项目的属性),不应该仅仅表现为纯文本,但作为一个Hyperlink为例子.
(另外:格式文本应取决于项目的类型)

如何TextBlock以这种方式生成文本?(用于本地化)

问题更多:我应该自己写一些东西,还是框架提供了一种简单的方法?

wpf binding string-formatting

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

检查给定的可执行文件是否经过数字签名且有效?

在我的C#/ .NET应用程序中,我必须检查给定的可执行文件是否经过数字签名 (最好不Exception进行测试).

然后我需要检查其证书是否有效 (基于已安装的根证书)以及文件内容是否对签名有效.

这里有很多课程BCL,我不知道从哪里开始和使用什么,到目前为止我发现的任何东西并没有消除我的困惑......

如果没有 P/Invoke可能,我想做这样的事情:

bool IsSignedFile(string path);  
Cert GetCertificateFromSignedFile(string path);
bool IsValidCertificate(Cert cert)
Sig GetSignatureFromSignedFile(string path);
bool IsValidSignature(string path, Sig sig, Cert cert);  
Run Code Online (Sandbox Code Playgroud)

补充说明:

我目前遇到的一个大问题是,我找不到一种方法来轻松获取此类文件的签名.仍然希望有一个提供的,可管理的BCL解决方案,因为如果缺少这一部分,我会感到惊讶.(对于证书,这可以通过公正的方式完成,也可以进行X509Certificate.CreateFromSignedFile验证)
我不希望将50%的工作与P/Invoke代码或大型不同的库混合使用.

我找到了一个AuthenticodeSignatureInformation类,但没有关于为给定的可执行文件使用它的信息.

.net c# cryptography code-signing authenticode

12
推荐指数
1
解决办法
4843
查看次数

在wpf中限制附加的依赖项属性

我想仅将依赖属性附加到特定控件.

如果只是一种类型,我可以这样做:

public static readonly DependencyProperty MyPropertyProperty = DependencyProperty.RegisterAttached("MyProperty", typeof(object), typeof(ThisStaticWrapperClass));

public static object GetMyProperty(MyControl control)
{
    if (control == null) { throw new ArgumentNullException("control"); }

    return control.GetValue(MyPropertyProperty);
}

public static void SetMyProperty(MyControl control, object value)
{
    if (control == null) { throw new ArgumentNullException("control"); }

    control.SetValue(MyPropertyProperty, value);
}
Run Code Online (Sandbox Code Playgroud)

(所以:限制ControlGet/Set-Methods中的类型)

但是现在我想允许该属性附加在不同类型的属性上Control.
您尝试使用该新类型为这两个方法添加重载,但由于"未知的构建错误,找到了模糊匹配"而无法编译.

那么如何限制我DependencyProperty选择Controls呢?
(注意:在我的具体情况下,我需要它TextBoxComboBox)

.net c# wpf dependency-properties

11
推荐指数
1
解决办法
2570
查看次数

显示X509Certificate,其链元素不在证书库中

我有一个类型的对象,X509Certificate2并希望将其显示给用户.我正在用这个X509Certificate2UI.DisplayCertificate方法做这件事.

我遇到的问题是我想要显示的这个证书是由中间CA颁发的,证书不在机器证书存储区中,但其根目录是.

现在,如果我显示所述证书,则对话框无法构建链 (与我相反,因为我能够X509Chain将中间CA作为额外元素)

如何使用整个链显示证书?

X509Certificate2 endCert = ...;
X509Certificate2 intermediateCA = ...;

X509Chain chain = new X509Chain();
chain.ChainPolicy.ExtraStore.Add(intermediateCA);
chain.Build(endCert); // Whole chain!

X509Certificate2UI.DisplayCertificate(endCert); // Dialog shows: "The issuer of this certificate could not be found."
Run Code Online (Sandbox Code Playgroud)

(我无法/允许将中间CA添加到用户/机器商店!)
(我无法/允许创建我自己的对话框.它必须是默认的Windows对话框!)
(P/Invoke是允许,如果需要)


只是作为一个例子,你可以尝试这些证书上面的测试,但你必须要参考System.Security.dllX509Certificate2UI.DisplayCertificate:

X509Certificate2 endCert = new X509Certificate2(
            Convert.FromBase64String(
                "MIIE8zCCA9ugAwIBAgIQSBDq+mlsLsCZqWMIWj/YADANBgkqhkiG9w0BAQUFADA8MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMVGhhd3RlLCBJbmMuMRYwFAYDVQQDEw1UaGF3dGUgU1NMIENBMB4XDTExMTI" + 
                "yMDAwMDAwMFoXDTE0MDIxNzIzNTk1OVowgYsxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhNYXJ5bGFuZDEUMBIGA1UEBxQLRm9yZXN0IEhpbGwxIzAhBgNVBAoUGkFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW" +
                "9uMRcwFQYDVQQLFA5JbmZyYXN0cnVjdHVyZTEVMBMGA1UEAxQMKi5hcGFjaGUub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEApyhxElzdnWks7MMCEx24FMhHCbFcgKbO+fh/+JYrV91Cs" +
                "xsdqsAsvAU37P/eLMQ3ZVm93c6uQbt6cq+0VXniviFjXS3qUUJVUC60Q/YDzaYrTFZdY8ccA5wWdFTiMlJgwIqdlvB7JLkOzotvawRfJxeH+aucY756TdYGapAyno+3pWNXnU5sr1oaJ4uGchaS7LUAqpfP" +
                "fA3oTv63ZmIzHh2MTfDeUgdVSxeqEj3FCObLdps4Fs6c08Re2KAEZ+0UcMwNyJh0y6aP6PBgZAdt3qODONrI56TCDxjMC47lmIrm/U2Vy+v1LB90uU/1ESAiKvIKLjVZucO0U4Ol8VgiSDIH1FezXEhl+fP" + 
                "zY1N18u6kMx0AGDKDO0fBkUpkA6r6K4Kk/YvEJBLiIvLwLLnQhcwJjhRZItA52dNvKHMRYh5er1xVbLj7X+ujDfA6RpJYOmmPUxYzsZpZhTk0wybuGrkuvrm5t9ONP4p/2lan1G9aXqK6OLNh4W9IVUs1o1" +
                "KvMP86ToBOsZY/g50cld0kh7AMR+W/Lg9WtPxs1nq98k2J7HZBmMnYTEqwzSFtsMzGlqcFXO170JnfgklUjzi12vwQYO0bf/q+3e7QQsYRXzSGUEdKJZvzs0P09jJ6W/mDdnMdaoh7eYP5eynleZtElUgcd" +
                "NNgVAHn8NEUnJpwbGUCAwEAAaOBoDCBnTAMBgNVHRMBAf8EAjAAMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly9zdnItb3YtY3JsLnRoYXd0ZS5jb20vVGhhd3RlT1YuY3JsMB0GA1UdJQQWMBQGCCsGAQUF" +
                "BwMBBggrBgEFBQcDAjAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnRoYXd0ZS5jb20wDQYJKoZIhvcNAQEFBQADggEBAA6BnlWlsAXvTmDpqijPpBUkD9Xkbys7UC/FOuUVr3P" +
                "K3d3GCQynwhooBe2CAshtxjb3Cc8zJfeqb5IQfjTcuEznIpONvqFvSmU4/INS+3/TPLoyQ81wpsIUbJzhhJY78CH8TZ5cn2BtWkI9fEydAXYe9a64GVdjPBJhneBon3J63s895GSSucQAIQZEiXBAqoklS5" …
Run Code Online (Sandbox Code Playgroud)

.net c# certificate

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

使用C#和VB.NET代码合并WPF应用程序

我有一个写入的应用程序,C#它需要一些功能VB.NET (更好地说,有效CIL但未提供C#).
所以我有一个可执行文件和一个库文件.

问题:
它必须在一个文件中发布,并且可能不会拆分为不同的程序集!
但是:
这是一个WPF应用程序,ILMerge无法运行.

我能做什么?
是否可以动态生成(高性能)IL?

.net c# vb.net

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

为什么 ReadOnlyCollection<T> 不是 ReadOnlyList<T>?

我认为IEnumerable事物是您可以迭代的对象。
如果它们也是ICollections,你就会知道里面有多少元素。
如果它们是偶数,IList您可以从特定索引中获取包含对象。

一个ReadOnlyCollection<T>实现IList<T>。所以不会ReadOnlyList<T>是一个更好的名字。

ReadOnlyCollection<T>框架中有真实的吗?
(所以我不需要 IList 来创建这样的只读包装器)

.net collections readonly

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

为什么string不实现IList <char>?

标题说全部

为什么要String实施IEnumerable<char>而不是IList<char>

字符串具有长度,您可以从特定索引中获取元素.
并且可以表明它是不可改变的ICollection<char>.IsReadOnly.

那么它可能有什么问题呢?我错过了什么吗?

正如许多答案所指出的那样: 没有单独的只读列表/集合的界面,但是作为ReadOnlyCollection<T>节目,我认为它绝对可能并且使用它IsReadOnly为这种情况设计的属性.

   public class String : IList<char>
    {
        int IList<char>.IndexOf(char item)
        {
            // ...
        }

        void IList<char>.Insert(int index, char item)
        {
            throw new NotSupportedException();
        }

        void IList<char>.RemoveAt(int index)
        {
            throw new NotSupportedException();
        }

        char IList<char>.this[int index]
        {
            set
            {
                throw new NotSupportedException();
            }
        }

        void ICollection<char>.Add(char item)
        {
            throw new NotSupportedException();
        }

        void ICollection<char>.Clear()
        {
            throw new NotSupportedException();
        }

        public bool Contains(char item) …
Run Code Online (Sandbox Code Playgroud)

.net c# string

5
推荐指数
3
解决办法
1029
查看次数

将密钥转换为char

我想将给定的System.Windows.Forms.Keys一组和一组翻译成System.Windows.Forms.InputLanguage相应的System.Char.

试过一些实验MapVirtualKeyEx,但现在有办法考虑键盘状态,并且ToUnicodeEx死键的痛苦.

我的目标是一个功能......

static char? FromKeys(Keys keys, InputLanguage inputLanguage)
{
    // As I think what can be helpful and I got trying to find a solution for this problem:
    Keys vkCode = keys & Keys.KeyCode;
    Keys modifiers = keys & Keys.Modifiers;

    byte[] keyboardState = new byte[256];

    keyboardState[vkCode] = 1 << 7;

    if (modifiers.HasFlag(Keys.Shift))
    {
        keyboardState[(int)Keys.ShiftKey] = 1 << 7;
    }

    if (modifiers.HasFlag(Keys.Control))
    {
        keyboardState[(int)Keys.ControlKey] = 1 << 7; …
Run Code Online (Sandbox Code Playgroud)

.net keycode winforms

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