I've got errors when I build my project:
Warning as Error: Type of 'OthersAddresses.AddresseTypeParameter' is not CLS-compliant C:...\Units\OthersAddresses.ascx.cs
public Address.AddressTypeEnum AddressTypeParameter
{
get
{
return _addressTypeParameter;
}
set
{
_addressTypeParameter = value;
}
}
and this one:
Warning as Error: Type of 'Global.UserInSession' is not CLS-compliant C:...\Global.asax.cs
public static User UserInSession
{
get
{
return (HttpContext.Current.Session["CurrentUser"] == null)
? null
: HttpContext.Current.Session["CurrentUser"] as User;
}
set
{
HttpContext.Current.Session["CurrentUser"] = value;
}
}
I added attribute [CLSCompliant(false)]
before UserInSession
and AddresseTypeParameter
and it works but I would like to understand why it was not CLS-compliant.
Some more information about classes and enum:
Class User (User.cs)
public class User
{
private string _uniqueIdentifier;
private string _password = string.Empty;
private string _email = string.Empty;
private string _passwordQuestion = string.Empty;
private string _passwordAnswer = string.Empty;
private string _id_directions_db = string.Empty;
private string _id_gesab = string.Empty;
private string _zipCode = string.Empty;
private string _fonction_id = string.Empty;
private string _fonction = string.Empty;
private string _structure_id = string.Empty;
private string _structure = string.Empty;
private string _firstName = string.Empty;
private string _lastName = string.Empty;
private string _company = string.Empty;
private string _avatarPath = string.Empty;
private Role _role = new Role();
private List<Address> _addressList = new List<Address>();
private string _otherInformation = string.Empty;
private MembershipUser _membershipUserAssociated = null;
...
public enum GenderEnum
{
Empty = 0,
Monsieur,
Madame
}
And
enum AddressTypeEnum (Address.cs)
public class Address
{
private AddressTypeEnum _addressType;
private string _firstName = string.Empty;
private string _lastName =string.Empty;
private string _structure = string.Empty;
private string _structureComplementary = string.Empty;
private string _addressStreet = string.Empty;
private string _addressComplementary = string.Empty;
private string _bp = string.Empty;
private string _zipCode = string.Empty;
private string _country = string.Empty;
private string _countryId = string.Empty;
private string _city = string.Empty;
private string _phone = string.Empty;
private string _fax = string.Empty;
private string _email = string.Empty;
public enum AddressTypeEnum
{
Empty = 0,
Personal = 1,
Billing = 2,
Delivery = 3
}
You need to use the CLSCompliantAttribute
:
If no CLSCompliantAttribute is applied to a program element, then by default:
- The assembly is not CLS-compliant.
- The type is CLS-compliant only if its enclosing type or assembly is CLS-compliant.
- The member of a type is CLS-compliant only if the type is CLS-compliant.
Apart from this you need to ensure your assembly is indeed CLS compliant.
This is letting you know that "Type of 'OthersAdresses.AdresseTypeParameter' is not CLS-compliant", not that the properties necessarily are. Take a look at the types, not the properties, and you will probably find what is causing the warning.
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