小编Sun*_*nny的帖子

Enum.TryParse with Flags属性

我已经TryParse通过值或名称编写了枚举代码,如下所示.如何扩展此代码以包含使用Flags属性解析枚举?

    public static bool TryParse<T>(this T enum_type, object value, out T result) 
                where T : struct
            {
                return enum_type.TryParse<T>(value, true, out result);
            }



 public static bool TryParse<T>(this T enum_type, 
object value, bool ignoreCase, out T result)
        where T : struct
    {
        result = default(T);
        var is_converted = false;

        var is_valid_value_for_conversion = new Func<T, object, bool, bool>[]{
            (e, v, i) => e.GetType().IsEnum,
            (e, v, i) => v != null,
            (e, v, i) => Enum.GetNames(e.GetType()).Any(n => String.Compare(n, v.ToString(), …
Run Code Online (Sandbox Code Playgroud)

.net json.net .net-3.5

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

构造函数+依赖注入

如果我正在编写一个包含多个构造函数参数的类,例如:

class A{
    public A(Dependency1 d1, Dependency2 d2, ...){}
}
Run Code Online (Sandbox Code Playgroud)

我通常会创建一个"参数持有者"类的类,如:

class AArgs{
    public Dependency1 d1 { get; private set; }
    public Dependency2 d2 { get; private set; }
    ...
}
Run Code Online (Sandbox Code Playgroud)

然后:

class A{
    public A(AArgs args){}
}
Run Code Online (Sandbox Code Playgroud)

通常,使用DI容器我可以为依赖关系配置构造函数并解析它们,因此当构造函数需要更改时,影响最小.

这被认为是反模式和/或反对这样做的任何论据吗?

c# oop dependency-injection

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

C#属性定义

对于C#属性,我可以这样做:

public class Employee{

 public string Name { get; private set; }

 public Employee(string name){
  Name = name;
 }

}
Run Code Online (Sandbox Code Playgroud)

这意味着Name属性可以在Employee类中设置并且可以公开读取.

但是,如果我想将集合限制在Employee类的构造函数中,我需要做:

public class Employee{
 public readonly string Name = String.Empty;
 public Employee(string name){
  Name = name;
 }
}
Run Code Online (Sandbox Code Playgroud)

但是,对于这种情况,我不得不将属性更改为字段.

是否有任何理由在C#中不可能/允许:

public class Employee{
 public string Name { get; private readonly set; }
 public Employee(string name){
  Name = name;
 }
}
Run Code Online (Sandbox Code Playgroud)

IMO这将允许我们拥有只能在构造函数中设置的属性,并且不需要我们将属性更改为字段...

谢谢!

c#

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

标签 统计

c# ×2

.net ×1

.net-3.5 ×1

dependency-injection ×1

json.net ×1

oop ×1