Is there a way I can have a generated code file like so:
public partial class A { public string a { get; set; } }
and then in another file:
public partial class A { [Attribute("etc")] public string a { get; set; } }
So that I can have a class generated from the database and then use a non-generated file to mark it up?
The partial keyword indicates that other parts of the class, struct, or interface can be defined in the namespace. All the parts must use the partial keyword. All the parts must be available at compile time to form the final type. All the parts must have the same accessibility, such as public , private , and so on.
Similar to a partial class, a partial method can be used as a definition in one part while another part can be the implementation. If there is no implementation of the partial method then the method and its calls are removed at compile time. Compiler compiles all parts of a partial method to a single method.
Inheritance cannot be applied to partial classes.
You need to use partial keyword in each part of partial class. The name of each part of partial class should be the same but source file name for each part of partial class can be different. All parts of a partial class should be in the same namespace.
Here is the solution I have been using for such cases. It is useful when you have auto-generated classes that you want to decorate with attributes. Let's say this is the auto-generated class:
public partial class UserProfile { public int UserId { get; set; } public string UserName { get; set; } public string Firstname { get; set; } public string Lastname { get; set; } }
And let's say, I would like to add an attribute to specify that UserId is the key. I would then create a partial class in another file like this:
[Table("UserProfile")] [MetadataType(typeof(UserProfileMetadata))] public partial class UserProfile { internal sealed class UserProfileMetadata { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int UserId { get; set; } } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With