Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 方法输入参数作为命名空间_C#_.net_.net 3.5 - Fatal编程技术网

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

C# 方法输入参数作为命名空间,c#,.net,.net-3.5,C#,.net,.net 3.5,假设我有这些物体 namespace MyResponses.Interfaces.IInterface1 { partial class exResponse { Object1 myObj; bool flag; } } namespace MyResponses.Interfaces.IInterface2 { partial class exResponse { Object2 myObj;

假设我有这些物体

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.Interfaces命名空间内接收对象

比如:

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;
}

你说的“这些物体”是什么意思?您的意思是说您实际上有三种不同的类型,都称为
exResponse
,都带有
标志
字段或属性?首先,我要避免这样做。所有这些都是来自不同web服务的不同响应,我没有实现:)我对什么是名称空间、什么是类型以及什么是成员感到困惑。我更新了我的问题。。不知道它是否有帮助,因为我使用的是.NET3,所以动态语句不起作用。5@H埃尔德冈萨尔维斯:今后,请在问题中明确这样的限制。不过,听起来部分课堂教学法会奏效。