Access modifiers - Property on business objects - getting and setting
- by Mike
Hi,
I am using LINQ to SQL for the DataAccess layer.
I have similar business objects to what is in the data access layer.
I have got the dataprovider getting the message #23. On instantiation of the message, in the message constructor, it gets the MessageType and makes a new instance of MessageType class and fills in the MessageType information from the database.
Therefore; I want this to get the Name of the MessageType of the Message.
user.Messages[23].MessageType.Name
I also want an administrator to set the MessageType
user.Messages[23].MessageType = MessageTypes.LoadType(3);
but I don't want the user to publicly set the MessageType.Name.
But when I make a new MessageType instance, the access modifier for the Name property is public because I want to set that from an external class (my data access layer).
I could change this to property to internal, so that my class can access it like a public variable, and not allow my other application access to modify it.
This still doesn't feel right as it seems like a public property.
Are public access modifiers in this situation bad?
Any tips or suggestions would be appreciated.
Thanks.