小编use*_*964的帖子

枚举的字符串表示形式

我有以下枚举:

public enum AuthenticationMethod
{
    FORMS = 1,
    WINDOWSAUTHENTICATION = 2,
    SINGLESIGNON = 3
}
Run Code Online (Sandbox Code Playgroud)

然而问题是,当我要求AuthenticationMethod.FORMS而不是id 1时,我需要"FORMS"这个词.

我找到了以下解决此问题的方法(链接):

首先,我需要创建一个名为"StringValue"的自定义属性:

public class StringValue : System.Attribute
{
    private readonly string _value;

    public StringValue(string value)
    {
        _value = value;
    }

    public string Value
    {
        get { return _value; }
    }

}
Run Code Online (Sandbox Code Playgroud)

然后我可以将此属性添加到我的枚举器:

public enum AuthenticationMethod
{
    [StringValue("FORMS")]
    FORMS = 1,
    [StringValue("WINDOWS")]
    WINDOWSAUTHENTICATION = 2,
    [StringValue("SSO")]
    SINGLESIGNON = 3
}
Run Code Online (Sandbox Code Playgroud)

当然我需要一些东西来检索StringValue:

public static class StringEnum
{
    public static string GetStringValue(Enum value)
    { …
Run Code Online (Sandbox Code Playgroud)

c# enums

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

使用Case/Switch和GetType来确定对象

可能重复:
C# - "开启类型"有比这更好的选择吗?

如果你想要switch一种类型的对象,最好的方法是什么?

代码段

private int GetNodeType(NodeDTO node)
{
    switch (node.GetType())
    { 
        case typeof(CasusNodeDTO):
            return 1;
        case typeof(BucketNodeDTO):
            return 3;
        case typeof(BranchNodeDTO):
            return 0;
        case typeof(LeafNodeDTO):
            return 2;
        default:
            return -1;
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道这不起作用,但我想知道如何解决这个问题.if/else在这种情况下是否适用声明?

或者你使用开关并添加.ToString()到类型?

.net c# reflection case switch-statement

143
推荐指数
9
解决办法
20万
查看次数

Log4Net:Rolling File appender,定义扩展

我希望我的日志文件看起来像这样:2009-02-13.log

但问题是我似乎无法找到任何方法来添加.log扩展名.

我尝试了很多东西,但没有任何帮助.这是我迄今为止所拥有的:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="Logs/Log4Net/.log"/>
    <appendToFile value="true"/>
    <rollingStyle value="Date"/>
    <datePattern value="yyyy-MM-dd" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
    </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

log4net config rollingfileappender

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

反思有多慢

我最近创建了一个接口层来区分DataAccessProvider和业务逻辑层.通过这种方法,我们可以随时通过更改Web/App.Config中的值来更改DataAccessProvider的选择.(如果需要,可以给出更多细节).

无论如何,要做到这一点,我们使用反射来完成我们可以工作的DataProvider类.

/// <summary>
/// The constructor will create a new provider with the use of reflection.
/// If the assembly could not be loaded an AssemblyNotFoundException will be thrown.
/// </summary>
public DataAccessProviderFactory()
{
    string providerName = ConfigurationManager.AppSettings["DataProvider"];
    string providerFactoryName = ConfigurationManager.AppSettings["DataProviderFactory"];
    try
    {
        activeProvider = Assembly.Load(providerName);
        activeDataProviderFactory = (IDataProviderFactory)activeProvider.CreateInstance(providerFactoryName);
    }
    catch
    {
        throw new AssemblyNotFoundException();
    }
}
Run Code Online (Sandbox Code Playgroud)

但现在我想知道反思有多缓慢?

c# reflection performance assemblies

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

提交后如何防止密码输入被清除?

如果你有一个页面<asp:TextBox TextMode="Password" ... />.
如何在回发后保留价值?

这是我的问题:
在我的应用程序的注册屏幕上,您需要输入密码.然后单击"提交",发生回发并清除密码字段,如何防止密码字段清除?

c# asp.net postback

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

如何在C#和Java中生成相同的MD5 Hashcode?

我有一个在C#中生成MD5哈希的函数,如下所示:

MD5 md5 = new MD5CryptoServiceProvider();
byte[] result = md5.ComputeHash(data);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < result.Length; i++)
{
    sb.Append(result[i].ToString("X2"));
}
return sb.ToString();
Run Code Online (Sandbox Code Playgroud)

在java中,我的函数如下所示:

MessageDigest m = MessageDigest.getInstance("MD5");
m.update(bytes,0,bytes.length);

String hashcode = new BigInteger(1,m.digest()).toString(16);
return hashcode;
Run Code Online (Sandbox Code Playgroud)

当C#代码生成:"02945C9171FBFEF0296D22B0607D522D"时,java代码生成:"5a700e63fa29a8eae77ebe0443d59239".

有没有办法为同一个bytearray生成相同的md5哈希?

一经请求:

这是java中的testcode:

File file = new File(System.getProperty("user.dir") + "/HashCodeTest.flv");
byte[] bytes = null;
try {
    bytes = FileUtils.getBytesFromFile(file);
} catch (IOException e) {
    fail();
}
try {
    generatedHashCode = HashCode.generate(bytes);
} catch (NoSuchAlgorithmException e) {
    fail(); …
Run Code Online (Sandbox Code Playgroud)

c# java md5 bytearray

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

存储过程的使用是不好的做法?

我们有一个用C#编写的应用程序,它连接到ms sql服务器.我们使用为每个数据库调用创建一个存储过程,但后来我们注意到使用存储过程给我们带来了很大的缺点,如果我们更改数据库,我们不知道需要更新哪些存储过程.

现在我想知道使用存储过程是坏事还是好事?

c# database sql-server database-design stored-procedures

12
推荐指数
4
解决办法
5723
查看次数

如何强制浏览器下载xml文件?

这是我的问题.我从我的数据库加载xml并使用代码将其推送到客户端.但问题是浏览器会自动打开xml,而不是将其作为下载提供.

有没有办法强制您的浏览器下载该文件而不显示它?

我在C#,Asp.net环境(使用IIS7)工作.

谢谢

c# xml asp.net download

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

从HTML导出为PDF(C#)

可能重复:
在.NET中将HTML转换为PDF

在我们的应用程序中,我们将html文档作为报告和导出.但现在我们的客户想要一个按钮,将该文档保存在他们的电脑上.问题是文档包含图像.您可以使用以下代码创建Word文档:

private void WriteWordDoc(string docName)
{
    Response.Buffer = true;
    Response.ContentType = "application/msword";
    Response.AddHeader("content-disposition", String.Format("attachment;filename={0}.doc", docName.Replace(" ", "_")));
    Response.Charset = "utf-8";
}
Run Code Online (Sandbox Code Playgroud)

但问题是图像只是链接,因此没有嵌入word文档中.

因此,我正在寻找替代PDF似乎是一个很好的选择,有没有人知道一个优秀的C#作者?一个有一些很好的参考,并已经过适当的测试?

html c# asp.net export

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

授权Asp.net web.config

我有一个有后台的应用程序.使用这样的角色隔离了这个后台:

<location path="backoffice">
    <system.web>
        <authorization>
            <allow roles="admin"/>
            <deny users="*"/>
        </authorization>
    </system.web>
</location>
Run Code Online (Sandbox Code Playgroud)

但现在我们有另一种需要访问的角色.companyadmin的角色.

我可以说吗?:

 <location path="backoffice">
        <system.web>
            <authorization>
                <allow roles="admin,companyadmin"/>
                <deny users="*"/>
            </authorization>
        </system.web>
    </location>
Run Code Online (Sandbox Code Playgroud)

c# asp.net security web-config roles

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