2017-02-23 34 views
-3

我在基类中的以下方法:C#调用基方法与另一本

public class Base 
{ 
protected string Make(string param) 
     { 
      return this.ClientID + "_" + configParam; 
     } 
} 

,我有另一个类

public class Class2 : Base 
{ 

} 

而且

public class Class3 : Base 
{ 
//HERE i would like to call Make but with the THIS as Class2, not the current - Class3. 
} 

这是可能的?

谢谢。

+7

简答题。 NO – Nkosi

+0

感谢Nikosi的回答。 –

+4

通过您所拥有的类的结构,'Class3'是'Class2'的_sibling_。这些类彼此不相关。从生物学的角度来看,你从父母继承遗传学,而不是你的兄弟和姐妹。 – krillgar

回答

1

假设你想要的Base只有子类调用Make,即使它不是自己Make,你可以添加一个protected调用方法(我把它叫做InvokeSiblingMake):

public class Base 
{ 
    private string ClientID; 
    protected string Make(string param) 
    { 
     return this.ClientID + "_" + param; 
    } 

    protected void InvokeSiblingMake(Base other) 
    { 
     other.Make("hello world"); 
    } 
} 

public class Class2 : Base 
{ 

} 

public class Class3 : Base 
{ 
    //HERE i would like to call Make but with the THIS as Class2, not the current - Class3. 
    public void Test(Class2 other) 
    { 
     InvokeSiblingMake(other); 
    } 
} 
+0

哎呀,这是令人费解和丑陋的,但它确实有效。 – krillgar

+1

@krillgar从生物学角度思考,就像跑向你的父母,并要求他们让你的兄弟做菜:P – grek40

0

随着类的结构你有Class3Class2的兄弟姐妹。你从你的父母继承,而不是你的兄弟和姐妹。这意味着无法通过baseClass3干净地调用Class2上的方法

有办法通过给Class2成员变量Class3,但在那一点上,你没有使用继承。在这种方法中,Class2可以继承自System.Object,System.DateTime或您可能创建的任何其他类。然后你代理上的属性设置为属性不是通过继承