通用转换

时间:2017-05-25 16:10:33

标签: c# generics

我希望能够将继承自Role的类型转换为Role。例如,RoleWithApiResources

我的Convert函数现在看起来像这样,但不编译:

public static Role Convert<T>(T role) where T : Role
{
    var result = new Role();
    result.Id = T.Id;
    result.Name = T.Name;
    result.Description = T.Description;

    return result;
}

2 个答案:

答案 0 :(得分:4)

根据您的约束,您应该使用role而不是T(并使用对象初始值设定项来简化代码):

public static Role Convert<T>(T role) where T : Role
{
    var result = new Role
    {
        Id = role.Id,
        Name = role.Name,
        Description = role.Description
    };

    return result;
}

答案 1 :(得分:2)

在您的功能中,您需要使用&#39;角色&#39;参数而不是T

例如:

public static Role Convert<T>(T role) where T : Role
{
    var result = new Role();
    result.Id = role.Id;
    result.Name = role.Name;
    result.Description = role.Description;

    return result;
}