具有两个泛型参数的C#中的泛型方法

罗希特

我想为采用两种类型的泛型值的这种类型的方法创建泛型方法吗?

我不想制作用于审核的重载方法来执行相同的冗余工作。

public class UserProfile : IUserProfile
{
    private static void GetAudit(ChangePasswordRequest changePasswordRequest, ChangePasswordResponse changePasswordResponse,
        int memberId, RemoteEndpointMessageProperty endpointProperty)
    {
        string auditText = "ChangePassword Req:";
        auditText += Util.Serialize(changePasswordRequest).ToString(CultureInfo.InvariantCulture);
        auditText += "Res:";
        auditText += Util.Serialize(changePasswordResponse).ToString(CultureInfo.InvariantCulture);
        Audit.Add(AuditEventType.UpdatePassword, Severity.Normal, memberId,
            changePasswordRequest.TokenId,
            auditText,
            endpointProperty.Address, changePasswordRequest.IpAddress);
    }
    private static void GetAudit(LoadSupplierRequest loadSupplierRequest, LoadSupplierResponse loadSupplierResponse,int memberID,
        RemoteEndpointMessageProperty endpointProperty)
    {
        string auditText = "LoadSupplier Req:";
        auditText += Util.Serialize(loadSupplierRequest).ToString(CultureInfo.InvariantCulture);
        auditText += "Res:";
        auditText += Util.Serialize(loadSupplierResponse).ToString(CultureInfo.InvariantCulture);
        Audit.Add(AuditEventType.LoadSupplier, Severity.Normal, memberID, loadSupplierRequest.TokenId,
            auditText,
            endpointProperty.Address, loadSupplierRequest.IpAddress);
    }
}

以下是类和接口的结构

public class ChangePasswordResponse : IResponse
{
    /// <summary>
    ///     Gets or sets the status.
    /// </summary>
    /// <value>
    ///     The status.
    /// </value>
    [DataMember]
    public ChangePasswordResponseStatus Status { get; set; }

    /// <summary>
    ///     Gets or sets the error.
    /// </summary>
    /// <value>
    ///     The error.
    /// </value>
    [DataMember]
    public Error Error { get; set; }

    /// <summary>
    ///     Gets or sets the token identifier.
    /// </summary>
    /// <value>
    ///     The token identifier.
    /// </value>
    [DataMember]
    public string TokenId { get; set; }
}
public interface IResponse
{
    [DataMember]
    Error Error { get; set; }

    [DataMember]
    string TokenId { get; set; }
}

public interface IRequest
{
    /// <summary>
    ///     Gets or sets the ip address.
    /// </summary>
    /// <value>
    ///     The ip address.
    /// </value>
    [DataMember(IsRequired = true)]
    string IpAddress { get; set; }

    /// <summary>
    ///     Gets or sets the token identifier.
    /// </summary>
    /// <value>
    ///     The token identifier.
    /// </value>
    [DataMember(IsRequired = true)]
    string TokenId { get; set; }
}
[Serializable]
public class ChangePasswordRequest : IRequest
{
    /// <summary>
    ///     Gets or sets the old password.
    /// </summary>
    /// <value>
    ///     The old password.
    /// </value>
    [DataMember(IsRequired = true)]
    public string OldPassword { get; set; }

    /// <summary>
    ///     Gets or sets the new password.
    /// </summary>
    /// <value>
    ///     The new password.
    /// </value>
    [DataMember(IsRequired = true)]
    public string NewPassword { get; set; }

    /// <summary>
    ///     Gets or sets the ip address.
    /// </summary>
    /// <value>
    ///     The ip address.
    /// </value>
    [DataMember(IsRequired = true)]
    public string IpAddress { get; set; }

    /// <summary>
    ///     Gets or sets the token identifier.
    /// </summary>
    /// <value>
    ///     The token identifier.
    /// </value>
    [DataMember(IsRequired = true)]
    public string TokenId { get; set; }
}
罗希特

我这样做:

private static void LogNormalAudit<TRequest, TResponse>(TRequest request, TResponse response,
        IRequest objRequest, int memberId, AuditEventType eventType)
    {
        bool isNormalSeverityOn = Convert.ToBoolean(ConfigurationSystem.SharedApiConfig["normal"]);
        if (!isNormalSeverityOn) return;
        var auditText = string.Format("Req: {0} |Rsp: {1}", Util.Serialize(request), Util.Serialize(response));
        Audit.Add(eventType, Severity.Normal, memberId, objRequest.TokenId, auditText, GetClientIp(),
            objRequest.IpAddress);
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

如何检查两个结构在Swift中是否具有相同的泛型参数类型?

来自分类Dev

如何检查两个结构在Swift中是否具有相同的泛型参数类型?

来自分类Dev

Kotlin 中具有两个类型参数的泛型类

来自分类Dev

C#泛型类作为参数,与泛型类的调用方法具有相同的T

来自分类Dev

C#泛型类作为参数,与泛型类的调用方法具有相同的T

来自分类Dev

C#如何对具有泛型类型的两个类使用一种方法?

来自分类Dev

c#中具有泛型类的泛型方法

来自分类Dev

nim两个具有泛型的键表

来自分类Dev

c#中具有多个类型参数的泛型方法

来自分类Dev

类中具有2个泛型类型的方法,其中1个泛型类型

来自分类Dev

类中具有2个泛型类型的方法,其中1个泛型类型

来自分类Dev

具有继承的C#泛型

来自分类Dev

在C#中检查T泛型类型具有属性S(泛型)

来自分类Dev

有没有办法在方法声明中定义两个泛型类型

来自分类Dev

具有泛型转换的C#调用阴影方法

来自分类Dev

在 C# 中,如何使用具有两种不同类型的泛型?

来自分类Dev

传递两个泛型作为函数参数

来自分类Dev

具有泛型的C#子类化:我需要给ctor一个额外的泛型参数,但是如何?

来自分类Dev

C#中的静态泛型方法

来自分类Dev

在C#中调用泛型方法

来自分类Dev

如何在具有多个约束的C#中实现泛型方法

来自分类Dev

如何使用 linq c# 或内部泛型方法为任何一个或两个 prop 赋值?

来自分类Dev

用具有两个泛型字段的类覆盖hashCode

来自分类Dev

具有两个类型约束和接口实现的泛型类

来自分类Dev

Swift要求两个泛型具有相同的类型

来自分类Dev

继承两个泛型类型

来自分类Dev

具有泛型方法和参数的重载方法

来自分类Dev

将具有泛型参数的静态方法转换为泛型类

来自分类Dev

具有不同类型泛型参数的方法的泛型类

Related 相关文章

  1. 1

    如何检查两个结构在Swift中是否具有相同的泛型参数类型?

  2. 2

    如何检查两个结构在Swift中是否具有相同的泛型参数类型?

  3. 3

    Kotlin 中具有两个类型参数的泛型类

  4. 4

    C#泛型类作为参数,与泛型类的调用方法具有相同的T

  5. 5

    C#泛型类作为参数,与泛型类的调用方法具有相同的T

  6. 6

    C#如何对具有泛型类型的两个类使用一种方法?

  7. 7

    c#中具有泛型类的泛型方法

  8. 8

    nim两个具有泛型的键表

  9. 9

    c#中具有多个类型参数的泛型方法

  10. 10

    类中具有2个泛型类型的方法,其中1个泛型类型

  11. 11

    类中具有2个泛型类型的方法,其中1个泛型类型

  12. 12

    具有继承的C#泛型

  13. 13

    在C#中检查T泛型类型具有属性S(泛型)

  14. 14

    有没有办法在方法声明中定义两个泛型类型

  15. 15

    具有泛型转换的C#调用阴影方法

  16. 16

    在 C# 中,如何使用具有两种不同类型的泛型?

  17. 17

    传递两个泛型作为函数参数

  18. 18

    具有泛型的C#子类化:我需要给ctor一个额外的泛型参数,但是如何?

  19. 19

    C#中的静态泛型方法

  20. 20

    在C#中调用泛型方法

  21. 21

    如何在具有多个约束的C#中实现泛型方法

  22. 22

    如何使用 linq c# 或内部泛型方法为任何一个或两个 prop 赋值?

  23. 23

    用具有两个泛型字段的类覆盖hashCode

  24. 24

    具有两个类型约束和接口实现的泛型类

  25. 25

    Swift要求两个泛型具有相同的类型

  26. 26

    继承两个泛型类型

  27. 27

    具有泛型方法和参数的重载方法

  28. 28

    将具有泛型参数的静态方法转换为泛型类

  29. 29

    具有不同类型泛型参数的方法的泛型类

热门标签

归档