方法输入参数作为命名空间
本文关键字:命名空间 参数 输入 方法 | 更新日期: 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;
}