无论这是否是一个好主意,是否有可能实现一个接口,使得正在执行的函数知道其调用对象的类型?
class A
{
private C;
public int doC(int input)
{
return C.DoSomething(input);
}
}
class B
{
private C;
public int doC(int input)
{
return C.DoSomething(input);
}
}
class C
{
public int DoSomething(int input)
{
if(GetType(CallingObject) == A)
{
return input + 1;
}
else if(GetType(CallingObject) == B)
{
return input + 2;
}
else
{
return input + 3;
}
}
}
在我看来,这似乎是一种不好的编码实践(因为参数没有改变,但输出会改变),但除此之外,是否有可能呢?
我面临这样的情况,希望几个特定的类型能够调用某个函数,但我不能排除对该函数的访问。 我想到了一个“type”参数。
DoSomething(int input, Type callingobject)
但无法保证调用对象使用GetType(this)而不是GetType(B)来欺骗一个B,而不考虑它们自己的类型。
这是否就像检查调用堆栈一样简单(相对简单)?