开发者

create mustoveride function with code in it

开发者 https://www.devze.com 2023-03-08 23:03 出处:网络
I have a MustInherit class with some MustOveride Methods in it. When i inherit form that class, I automatically get the MustOveride Methods or properties.

I have a MustInherit class with some MustOveride Methods in it. When i inherit form that class, I automatically get the MustOveride Methods or properties.

My question is, I want to be able, to inherit from a class, get my MustOv开发者_StackOverflow中文版eride functions and methods, but then with some code already in it. I've once seen a .net class that did it, when I inherited from that class, I got the methods, with some comments in it.

Does anybody have an idea what i mean? (It a bit hard to describe ;-) )


I think what you described is known as Template Method Pattern:

 public abstract class MyClass
 {
      public void SomeMethod()
      {
           // code
           MustInherit();
           // code
      }

      protected abstract void MustInherit();
  }

Create a method which will not be overridden SomeMethod in this sample and stuff all common code into this class. Then create an abstract method which must be overridden.

If you want to provide a default implementation, so the method must not be overridden but can be use the virtual keyword.

 public abstract class MyClass
 {
      public void SomeMethod()
      {
           // code
           MustInherit();
           // code
      }

      protected virtual void CanInherit()
      {
           // default implementation
      }
  }


I assume, you want to do have the following:
When you inherit from that abstract base class, you want to have those abstract methods already partly implemented in your class.
This is not possible out of the box. It could be achieved with some templating, but that has nothing to do with C# or VB.NET but with the IDE used.

The only thing you can do is to create that method as virtual (C# - I don't know how it is called in VB.NET) in the base class and call the base implementation in the derived class.


An Abstract class for you service :) If you need that consumer of your abstract class ovverides some methods for sure then mark them as abstract too. If you need just to provide possibility of ovveriding you methods but this is not definitely necessary then mark them as virtual.


With the virtual keyword you are not forced to implement the inherited method, then it will use the default implementation of the base class. In that way, you kind of inherit all the code from the base method.

Otherwise, you can implement you own derived version of the method, and somewhere in it call the base class' version of method : base.MethodName(...);. That allow you to kind of inherit all the code from the base method once again, but this time with additional code before and after which is specific to your derived class.

Otherwise, you can make your base class' method such that it uses delegates in its code and call it here and there. Thus the fundamental functioning of the base class' method remain the same for all the derived classes, but each derived class provides its own delegates to adjust some detail key blocks of code in the base class' method.

Otherwise, if you want to see partially implemented methods with comments here and there like Add your code here, it's typically a matter of code generated by an external tool like Visual Studio or another IDE and has nothing to do with the language itself.

But as you see there are plenty of possibilities, depending of you you want precisely...

0

精彩评论

暂无评论...
验证码 换一张
取 消