方法输入参数作为命名空间

本文关键字:命名空间 参数 输入 方法 | 更新日期: 2023-09-27 18:05:59

假设我有这些对象

namespace MyResponses.Interfaces.IInterface1
{
    partial class exResponse
    {
        Object1 myObj; 
        bool flag;
    }
}
namespace MyResponses.Interfaces.IInterface2
{
    partial class exResponse
    {
        Object2 myObj;
        bool flag;
    }
}
namespace MyResponses.Interfaces.IInterface3
{
    partial class exResponse
    {
        Object3 myObj; 
        bool flag;
    }
}

我需要一个方法来检查所有exResponse对象中的标志。这个方法将在MyResponses中接收一个对象。接口名称空间。

类似:

bool CheckFlagInResponse(MyResponses.Interfaces response, Type responseType)
{
    return (response as responseType).flag;
}

我会这样称呼它?

CheckFlagInResponse(myExResponse, myExResponse.GetType())

方法输入参数作为命名空间

如果您有非常相似的类型,它们都具有相同的成员(甚至相同的简单名称),但它们之间没有类型关系,那么听起来这基本上是被设计破坏的。

如果这是生成的代码,并且类型都在生成的代码中声明为partial类型,则可以通过使它们都实现一个接口来解决这个问题:

public interface IFlag
{
    bool Flag { get; }
}
namespace MyResponses.Interfaces.IInterface1
{
    public partial class ExResponse : IFlag {}
}
namespace MyResponses.Interfaces.IInterface2
{
    public partial class ExResponse : IFlag {}
}
// etc

那么你就可以使用IFlag来访问任何需要访问标志的东西——所有的响应类都将实现该接口。

或者,如果你真的必须(如果你正在使用。net 4,现在听起来好像你不是),你可以使用动态类型:

bool CheckFlagInResponse(dynamic response)
{
    return response.flag;
}