C## 8 (and above) has some restrictions regarding partial methods. For example :
C## 9 aims to remove these restrictions. If you want to learn more about the motivation behind this, you can find a good description on the Github page here: https://github.com/jaredpar/csharplang/blob/partial/proposals/extending-partial-methods.md
Below are some examples of what happens when a partial methods has or not an accessibility keyword, has or not an out parameter, a void or not return type, implements an interface:
partial class MyService : IMyService
{
partial void MyFirstFunction(); // Ok
private partial void MySecondFunction(); // CS0750 A partial method cannot have access modifiers or the virtual, abstract, override, new, sealed, or extern modifiers
private partial void MyThirdFunction(); // CS0750 A partial method cannot have access modifiers or the virtual, abstract, override, new, sealed, or extern modifiers
private partial object MyFourthFunction(); // CS0750 A partial method cannot have access modifiers or the virtual, abstract, override, new, sealed, or extern modifiers + CS0766 Partial methods must have a void return type
private partial object MyFifthFunction(); // CS0750 A partial method cannot have access modifiers or the virtual, abstract, override, new, sealed, or extern modifiers + CS0766 Partial methods must have a void return type
private partial void MySixthFunction(out int result); // CS0750 A partial method cannot have access modifiers or the virtual, abstract, override, new, sealed, or extern modifiers + CS0752 A partial method cannot have out parameters
public partial void MySeventhFunction(); // CS0750 A partial method cannot have access modifiers or the virtual, abstract, override, new, sealed, or extern modifiers
}
partial class MyService
{
private partial void MyThirdFunction() { } // CS0750 A partial method cannot have access modifiers or the virtual, abstract, override, new, sealed, or extern modifiers
private partial object MyFifthFunction() { return new { }; } // CS0750 A partial method cannot have access modifiers or the virtual, abstract, override, new, sealed, or extern modifiers + CS0766 Partial methods must have a void return type
}
public interface IMyService
{
void MySeventhFunction();
}
#c# #.net 5 #c#9 #extending partial methods #programming-c #csharp