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埃尔德冈萨尔维斯:今后,请在问题中明确这样的限制。不过,听起来部分课堂教学法会奏效。