我们说我有这些对象
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())
答案 0 :(得分:2)
听起来这基本上是破坏了设计,如果你有非常相似的类型都有相同的成员(甚至相同的简单名称),但它们之间没有类型关系。
如果这是生成的代码并且类型都在生成的代码中声明为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;
}