小编Mar*_*der的帖子

TFS电子邮件通知

当我在TFS中添加错误(工作项)并将其分配给用户时,我希望向该用户发送一封电子邮件.

此外,如果现有错误已更改"已分配给",我希望该用户收到电子邮件.是否可以在TFS 2008中为用户分配更改的错误时向用户发送警报?

email tfs tfs2008 alerts

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

catch中是否支持通用异常?

上面提到的另一个问题+答案在SO上没有包含正确的答案,适用于此处!

我有一个用于单元测试的方法.此方法的目的是确保一段代码(由委托引用)将抛出特定异常.如果抛出该异常,则单元测试成功.如果没有抛出异常或抛出其他类型异常,则单元测试将失败.

/// <summary>
/// Checks to make sure that the action throws a exception of type TException.
/// </summary>
/// <typeparam name="TException">The type of exception expected.</typeparam>
/// <param name="action">The code to execute which is expected to generate the exception.</param>
public static void Throws<TException>(Action action) 
    where TException : Exception
{
    try
    {
        action();
    }
    catch (TException)
    {
        return;
    }
    catch (Exception ex)
    {
        Assert.Fail("Wrong exception was thrown. Exception of type " + ex.GetType() + " was thrown, exception of type …
Run Code Online (Sandbox Code Playgroud)

c# generics try-catch visual-studio-2008

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

编译器用显式转换为.NET类型将显式转换替换为我自己的类型?

我有以下代码:

public struct Num<T>
{
    private readonly T _Value;

    public Num(T value)
    {
        _Value = value;
    }

    static public explicit operator Num<T>(T value)
    {
        return new Num<T>(value);
    }
}

...
double d = 2.5;
Num<byte> b = (Num<byte>)d;
Run Code Online (Sandbox Code Playgroud)

这段代码编译,令我惊讶.显式转换应该只接受a byte而不是a double.但双重被接受了.当我在转换器中放置断点时,我发现它value已经是byte有价值的2.通过从double到byte的转换应该是显式的.

如果我用ILSpy反编译我的EXE,我会看到下一个代码:

double d = 2.5;
Program.Num<byte> b = (byte)d;
Run Code Online (Sandbox Code Playgroud)

我的问题是:来自哪里的额外演员byte?为什么那里有额外的演员?我的演员去Num<byte>哪儿了?

编辑
结构Num<T>是整个结构,所以没有更多隐藏的额外方法或运算符.


按要求编辑 IL:

IL_0000: nop
IL_0001: ldc.r8 2.5 // Load the double 2.5. …
Run Code Online (Sandbox Code Playgroud)

c# generics casting explicit operators

11
推荐指数
2
解决办法
607
查看次数

类不是从对象继承的?

我正在研究一种方法,该方法使用反射来检查参数类型的方法.这个方法遍历ParameterInfo,并且正在对这些参数的类型做些什么.

我总是假设,如果下TypeInfo.IsClasstrue,这种类型的一类和派生总是(间接地)从式object(当类型为除object当然本身).所以,如果TypeInfo.IsClass是真的,TypeInfo.BaseType必须设置.

我的假设是错的!有些类不是从类型派生的object.我的假设搞砸了我的代码.

例如:

Type type = typeof(int).MakeByRefType();
Run Code Online (Sandbox Code Playgroud)

type.IsClasstruetype.BaseTypenull.

如果你考虑一下,这是合乎逻辑的.我可以通过检查来阻止我的代码崩溃TypeInfo.IsByRef.

现在我的问题是:是否有更多这样的"异国情调"类型(除了ByRef类型和类型object)是一个类(IsClass == true)但没有基类型(BaseType == null)?

在你回答之前:我只是提到那里的类型IsClass == true!我的类型int示例只是一个例子.它可以是任何类型.所以请不要:

  • 接口
  • 结构
  • 空虚

答案到目前为止:

  • ByRef types(T&):在问题中被解密.
  • 指针类型(T*):由Mark Gravell发现.

.net c# reflection inheritance typeinfo

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

如何格式化小数而不尾随零

我刚才知道小数以某种方式记住存储一个数字需要多少trailaing零.换句话说:它记住了分数的大小.

例如:

123M.ToString() ==> resuls in: 123
123.00M.ToString() ==> resuls in: 123.00
123.450M.ToString() ==> resuls in: 123.450
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个格式化字符串或另一个技巧来摆脱那些"不需要的"尾随零,但保持有效数字.所以:

123M.ToString() ==> resuls in: 123
123.00M.ToString() ==> resuls in: 123
123.450M.ToString() ==> resuls in: 123.45
Run Code Online (Sandbox Code Playgroud)

删除新字符串末尾的零对我来说不是一个真正的选择,因为那时我必须找出字符串是否包含一个分数,如果是,还必须删除可选的'.'.或','取决于文化等

c# decimal tostring string-formatting

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

如何确保在不调用任何成员的情况下调用静态构造函数

我有一个带有静态构造函数的类.

我希望在不调用或使用任何成员的情况下调用静态构造函数,但前提是尚未调用构造函数.

我尝试过使用反射.使用反射,我可以调用静态构造函数(很多次),但我不知道它是否已经被调用过.

我该怎么做呢?

编辑
这不仅是我正在谈论的一个班级,它可能更多.可以说,所有标有特殊属性的类.

c# static constructor static-constructor

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

无法将Base类(数据协定)强制转换为派生类

[DataContract]
public class SearchCriteria
{
    [DataMember]
    public string CountryID { get; set; }    
}

[DataContract]
public class CitySearchCriteria: SearchCriteria
{
    [DataMember]
    public string CityID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我在我的MVC控制器操作中创建了一个SearchCriteria实例,并尝试将其转换为CitySearchCriteria.

SearchCriteria searchCriteria = new SearchCriteria();
searchCriteria.CountryID = "1";
CitySearchCriteria citySearchCriteria = searchCriteria as CitySearchCriteria;
Run Code Online (Sandbox Code Playgroud)

上述语句后面的"citySearchCriteria"对象显示NULL值.我希望它显示属性,CountryID和CityID,其中CountryID已填充,CityID为空......但它将对象设置为NULL.

这可能是什么解决方案?DataContract有什么用呢?

评论建议,你不能将基数转换为派生:但实际上,我已经在我的视图中成功完成了这一点,它只是在控制器操作中不起作用:

CitySearchCriteria citySearchCriteria = (CitySearchCriteria)Model.SearchCriteria;
Run Code Online (Sandbox Code Playgroud)

这是成功转换的,为什么类似的东西不能在控制器动作中工作呢?

c# oop casting derived-class datacontract

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

转换数据类型的统一方法

.NET知道很多转换数据类型的方法:

  • Convert-类;
  • (Try)ParseToString等类型中的函数;
  • 接口的实现IConvertable;
  • TypeConverter;
  • 隐式和显式转换运算符;
  • 我错过了另一个吗?

因此,如果要将一种数据类型转换为另一种数据类型,我需要知道这两种类型,并且我需要知道要使用哪种转换方法.如果这两种类型中的一种(或两者)是泛型类型,这就变得非常讨厌.

所以我的问题是:我在.NET中有统一(通用)方式将一种数据类型转换为另一种数据类型,这可能会使用所有其他有限的方法吗?

.net c# converter typeconverter

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

如何在visual studio 2013中创建多项目模板?

我按照如何:创建多项目模板文章来创建一个模板,该模板将生成包含4个项目的解决方案.我的Root.vstemplate文件包含以下内容

<VSTemplate Version="2.0.0" Type="ProjectGroup"
xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
<TemplateData>
    <Name>Yugasat BeyondAdmin</Name>
    <Description>The Yugasat BeyondAdmin Project Template</Description>
    <Icon>Icon.ico</Icon>
    <ProjectType>CSharp</ProjectType>
</TemplateData>
<TemplateContent>
    <ProjectCollection>
        <ProjectTemplateLink ProjectName="PresentationLayer">
            PresentationLayer\MyTemplate.vstemplate
        </ProjectTemplateLink>
        <ProjectTemplateLink ProjectName="BusinessLogicLayer">
            BusinessLogicLayer\MyTemplate.vstemplate
        </ProjectTemplateLink>
        <ProjectTemplateLink ProjectName="BusinessLogicLayerAPI">
            BusinessLogicLayerAPI\MyTemplate.vstemplate
        </ProjectTemplateLink>
        <ProjectTemplateLink ProjectName="DataAccessLayer">
            DataAccessLayer\MyTemplate.vstemplate
        </ProjectTemplateLink>
    </ProjectCollection>
</TemplateContent>
Run Code Online (Sandbox Code Playgroud)

我将模板复制到[drive]:\Users\[user]\Documents\Visual Studio 2013\Templates\ProjectTemplates\文件夹中.问题是模板未列为多项目模板

在此输入图像描述

所以我可以创建单个项目,但不是包含所有4个项目的解决方案.我的模板文件夹的内容如下

在此输入图像描述

c# project-template

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

在csproj文件中构建配置

我在csproj文件中有一个包含这些属性组的类库:

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <Prefer32Bit>false</Prefer32Bit>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

如果我在一个解决方案中构建这个项目,该解决方案在"Debug"或"Release"之外的其他构建配置下构建,则该项目的构建将失败,因为它将找不到正确的构建配置.

有没有办法定义即使没有满足任何条件也会运行的默认构建配置?

c# build

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