小编M.B*_*ock的帖子

任务是作为后台线程创建的吗?

我只是想知道dot.net 4中的新Task类是创建后台线程还是前台线程?

通常我会在Thread上设置"IsBackground",但是Task上没有这样的属性.

我无法在MSDN上找到任何这方面的文档:-(

c#-4.0

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

识别扩展方法的思考

在C#中是否有一种使用反射来确定方法是否已作为扩展方法添加到类的技术?

给定一个扩展方法,如下所示,可以确定Reverse()已被添加到字符串类?

public static class StringExtensions
{
    public static string Reverse(this string value)
    {
        char[] cArray = value.ToCharArray();
        Array.Reverse(cArray);
        return new string(cArray);
    }
}
Run Code Online (Sandbox Code Playgroud)

我们正在寻找一种机制,在单元测试中确定扩展方法是由开发人员适当添加的.尝试这种情况的一个原因是,开发人员可能会在实际的类中添加类似的方法,如果是,编译器将选择该方法.

c# reflection extension-methods

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

ComboBox.SelectedText没有给我SelectedText

我正在构建一个String,代码看起来像

String status = "The status of my combobox is " + comboBoxTest.SelectedText
Run Code Online (Sandbox Code Playgroud)

我在VS2010中使用WinForm

结果看起来像

"我的组合框的状态是"

c# string combobox winforms

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

IoC在类库中.在哪里引导

我正在使用可以被其他组件重用的类库.在这个类库中,我使用unity来进行依赖注入.对于这个类库,我创建了一个测试项目.调用者也获得了一个测试项目.我不确定的一件事是绑定的位置.我应该在类库中加入它还是应该从调用应用程序中执行此操作?

c# dependency-injection inversion-of-control unity-container

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

在Ubuntu上使用VSCode编译C#项目

我根据文档中提供的各种教程在Ubuntu 14.04上设置了VSCode - 我尽可能多地尝试了.编辑器运行没有问题,并且(在完成Mono版本差异之后)提供了与我认为的大多数替代方案相比的优越编码体验.

我的问题出现在尝试编译我的C#项目时.这是我在完成入门指南时所期望的功能.点击ctrl+ shift+后,B我最初提示创建一个tasks.json文件,该文件看起来提供了项目特定的快捷键操作配置.从最初tasks.json生成的注释中,它似乎是针对Windows并且指的tsc.exe是一个TypeScript编译器的程序.

我花了一点时间在同一台笔记本电脑上使用MonoDevelop构建项目,但从未设置过编译步骤.我错误地认为这应该是开箱即用的功能,还是我错过了正确处理C#项目的一步?

c# ubuntu mono visual-studio-code

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

`Type.GetProperties`属性顺序

精简版

Type.GetProperties它返回的集合的状态的MSDN文档不保证按字母顺序或声明顺序,但运行一个简单的测试表明,它通常以声明顺序返回.您是否知道具体情况不是这种情况?除此之外,建议的替代方案是什么?

详细版本

我意识到Type.GetProperties状态的MSDN文档:

GetProperties方法不以特定顺序返回属性,例如按字母顺序或声明顺序.您的代码不得依赖于返回属性的顺序,因为该顺序会有所不同.

因此无法保证方法返回的集合将以任何特定方式进行排序.根据一些测试,我发现相反的返回属性按照它们在类型中定义的顺序出现.

例:

class Simple
{
    public int FieldB { get; set; }
    public string FieldA { get; set; }
    public byte FieldC { get; set; }
}
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Simple Properties:");
        foreach (var propInfo in typeof(Simple).GetProperties())
            Console.WriteLine("\t{0}", propInfo.Name);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

Simple Properties:
        FieldB
        FieldA
        FieldC
Run Code Online (Sandbox Code Playgroud)

一个这样的情况,这只是略有不同的是当有问题的类型的父母也有属性时:

class Parent
{
    public int ParentFieldB { get; set; }
    public string ParentFieldA { get; set; }
    public byte …
Run Code Online (Sandbox Code Playgroud)

c# reflection

23
推荐指数
4
解决办法
9257
查看次数

从linq var添加项目到列表

我有以下查询:

    public class CheckItems
    {
        public String Description { get; set; }
        public String ActualDate { get; set; }
        public String TargetDate { get; set; }
        public String Value { get; set; }
    }



   List<CheckItems>  vendlist = new List<CheckItems>();

   var vnlist = (from up in spcall
               where up.Caption == "Contacted"
                      select new CheckItems
                      {
                          Description = up.Caption,
                          TargetDate = string.Format("{0:MM/dd/yyyy}", up.TargetDate),
                          ActualDate = string.Format("{0:MM/dd/yyyy}", up.ActualDate),
                          Value = up.Value
                      }).ToList();
Run Code Online (Sandbox Code Playgroud)

//接下来,当我尝试将vnlist添加到vendlist时,我收到一个错误,因为我无法将其添加到我得到的列表中并且错误地说我有一些无效的参数

         vendlist.Add(vnlist);
Run Code Online (Sandbox Code Playgroud)

c# linq

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

保护代码中敏感数据的最佳方法是什么?

我正在研究保护我的代码免受反编译的方法.

这里有几个好的线程描述了混淆和代码打包作为保护代码的可能方法.但是,当使用字符串方法/属性名称时,混淆不适用于反射.许多人不建议使用混淆.

所以我现在决定不再使用上述任何一项.但是,我有部分代码需要加密,例如,带有IP的数据库连接字符串,登录名和密码都存储在代码中const string,与电子邮件帐户数据一样简单.

在ASP.NET中,有一个选项可以将敏感数据移动到.config文件并对其进行加密,但这需要服务器密钥,即链接到单个计算机.我没有读太多关于它,但我想类似的东西可用于桌面应用程序.但我需要这个在任何安装了应用程序的计算机上工作.

这里有一个问题:有没有办法对这些数据进行编码/保护,使其无法与反编译代码一起阅读?

.net c# security protection data-protection

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

C#british summer time(BST)timezone的缩写

我需要显示一个带有当前时区缩写的标签.我的电脑的时区目前设定为"(GMT)格林威治标准时间:都柏林,爱丁堡,里斯本,伦敦".因此,我希望看到BST显示,因为LN目前正处于英国夏季.

看起来这个信息(时区缩写)不可用.看看GMT TimeZoneInfo,关于名字我只能看到

Id  "GMT Standard Time"
StandardName    "GMT Standard Time"
DaylightName    "GMT Daylight Time"
Run Code Online (Sandbox Code Playgroud)

有没有办法从"GMT日光时间"或任何其他可用的Windows时区信息到达BST?

.net c# timezone

17
推荐指数
2
解决办法
6505
查看次数

使用带有包含的XSD

这是一个XSD:

<?xml version="1.0"?>
<xsd:schema 
elementFormDefault='unqualified' 
attributeFormDefault='unqualified' 
xmlns:xsd='http://www.w3.org/2001/XMLSchema' 
>

  <xsd:simpleType name='TheSimpleType'>
    <xsd:restriction base='xsd:string' />
  </xsd:simpleType>
</xsd:schema>
Run Code Online (Sandbox Code Playgroud)

这是第二个包含上述XSD的XSD:

<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema 
elementFormDefault='unqualified' 
attributeFormDefault='unqualified' 
xmlns:xsd='http://www.w3.org/2001/XMLSchema' 
targetNamespace='a'
xmlns='a'
>

  <xsd:include schemaLocation='Include.xsd' />

  <xsd:element name = "TheElement" >
  <xsd:complexType>
  <xsd:attribute name="Code" type="TheSimpleType" use="required"/>
  </xsd:complexType>
  </xsd:element>
</xsd:schema>
Run Code Online (Sandbox Code Playgroud)

我需要将(第二个)XSD读入C#并且:

  1. 检查它是否是有效的XSD,并且
  2. 验证文件.

下面是一些要在schemata中读取的C#:

    XmlSchemaSet schemaSet = new XmlSchemaSet();
    foreach (string sd in Schemas)
    {
        using (XmlReader r = XmlReader.Create(new FileStream(sd, FileMode.Open)))
        {
            schemaSet.Add(XmlSchema.Read(r, null));
        }
    }
    schemaSet.CompilationSettings = new XmlSchemaCompilationSettings();
    schemaSet.Compile();
Run Code Online (Sandbox Code Playgroud)

.Compile()失败,因为"Type'a:TheSimpleType'未声明,或者不是简单类型."

但是,它适用于:

  • 命名空间将从架构中删除,或
  • 命名空间被添加到include中.

问题是:如何在不编辑架构的情况下让C#接受它? …

c# xml xsd xml-namespaces

17
推荐指数
2
解决办法
9218
查看次数