小编Man*_*ank的帖子

使用反射设计气味?

我看到很多C#,.net问题在这里使用反射解决了.对我来说,很多它们看起来像是以优良设计(OOP)为代价而弯曲规则.许多解决方案看起来不可维护且"脚本".

使用反射一般是一种好习惯吗?有些事情只能通过反思来解决吗?

编辑:

请举例说明反射是唯一的好解决方案.

.net c# reflection

34
推荐指数
8
解决办法
3775
查看次数

有哪些选项可用于生成用户友好的字母数字ID(如业务ID,SKU)

以下是要求:

必须是字母数字,8-10个字符,以便用户友好.这些将作为唯一键存储在数据库中.我使用Guids作为主键,因此使用GUID生成这些唯一ID的选项将更可取.

我正在考虑一个base-n转换器的线路,它接受一个Guid并转换为一个8字符的唯一字符串.

简短,轻量级算法是首选,因为它会经常被调用.

.net c# algorithm guid

16
推荐指数
2
解决办法
4166
查看次数

当存在接口和实现时,Var关键字类型推断歧义

举个例子:

interface IEntity {
    string Name { get; set; }
}

class Product : IEntity {
    public string Name { get; set; }
    public int Count { get; set; } // added member
}

class Client {
    void Process() {
        var product = new Product();
        int count = product.Count; // this is valid            

    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,什么是产品类型?是IEntity还是产品?看来产品是具体实施类型(产品).如果是这种情况,则不应仅在特殊情况下使用var.但我发现像resharper这样的工具建议默认使用var.不应该有一个程序到界面?

c#

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

是否应该使用自引用通用继承,如Customer:Entity <Customer>

是否建议使用自引用通用继承?

public abstract class Entity<T> {
    public Guid Id {get; set;}
    public int Version {get; set;}

    public T Clone() {
        ...
        // clone routine
        ...
        return T;
    }
}

public class Customer : Entity<Customer> {
    public string CustomerName {get; set;}
    ...
}
Run Code Online (Sandbox Code Playgroud)

如何将Customer转换为基本实体类?"客户:实体"提供了哪些优势?我在示例中看到了这种继承,显示了NHibernate域建模.

没有泛型,使用"客户:实体"会更好吗?

c# generics nhibernate inheritance

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

标签 统计

c# ×4

.net ×2

algorithm ×1

generics ×1

guid ×1

inheritance ×1

nhibernate ×1

reflection ×1