Hi All,
I created a DLL in C-sharp and exposed to vb6. the dll will return a object
The declarartion of object in csharp is given below
Code:
 namespace ClassLibNew
{
	[ComVisible(true)]
	public interface IClassNewLib
	{
		ClassResponseMsg TestcallMethod();
		 
	} 
	[ClassInterface(ClassInterfaceType.None),
	ComVisible(true)]
	public class ClassNewLib : IClassNewLib 
	{
		public ClassNewLib()
		{
			//
			// TODO: Add constructor logic here
			//
		}
		 
		[ComVisible(true)]
		public ClassResponseMsg TestcallMethod()
		{
			ClassResponseMsg  obj=new ClassResponseMsg();
			ClassPersonName per =new ClassPersonName();
			per.ClassfirstName ="welcome";
			
			obj.ClassNameField =per;
			
		
			ClassAddress adp=new ClassAddress();
			 
			adp.ClassAddress1="MKGsjh";
			adp.ClassAddress2="eeeeee";
			adp.ClassAddrType= ClassAddr.ClassHomePhone ;

			ClassAddress adp1=new ClassAddress ();
			 
			adp1.ClassAddress1 ="QWq";
			adp1.ClassAddress1 ="AAAA";
			adp1.ClassAddrType=ClassAddr.ClassOfficePhone ;

			obj.classAddS     = new ClassAddress[2];
			obj.classAddS[0]=adp;
			obj.classAddS[1]=adp1;

			return obj;
		}

 
	}

	[ClassInterface(ClassInterfaceType.AutoDual)]
	[ComVisible(true)]
	public class ClassAddress
	{
		private string _ClassAddress1=string.Empty;
		private string _ClassAddress2=string.Empty;
		public ClassAddr ClassAddrType;
 
		public string ClassAddress1
		{
			set { _ClassAddress1 =value;}
			get {return _ClassAddress1;}
		}

		 
		public string ClassAddress2
		{
			set { _ClassAddress2 =value;}
			get {return _ClassAddress2;}
		}

		 
	}


	[Serializable]
	[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://NBK.com/Common")]
	[ComVisible(true)]
	public enum ClassAddr : byte
	{
		ClassHomePhone,
		ClassOfficePhone,
		ClassWorkPhone,
	}


	[ClassInterface(ClassInterfaceType.AutoDual)]
	[ComVisible(true)]
	public class ClassPersonName
	{
		public string ClassfirstName=string.Empty;
	}




	[ClassInterface(ClassInterfaceType.AutoDual)]
	[ComVisible(true)]
	public class ClassResponseMsg
	{
		public ClassPersonName ClassNameField = null;
 
		private  ClassAddress[] classAdds =null;
		
 
		[System.Xml.Serialization.XmlElementAttribute("classAdds",typeof(ClassAddress))]
		public ClassAddress[] classAddS
		{
			get
			{
				return this.classAdds;
			}
			set
			{
				this.classAdds = value;
			}
		}
		
	}
And once the dll is reguster for COM and called in VB the below code in VB
Code:
Dim ob As Object
Set ob = CreateObject("ClassLibNew.ClassNewLib")
Dim yah As Object
Set yah = CreateObject("ClassLibNew.ClassResponseMsg")
Set yah = ob.TestcallMethod()
Dim vari As Variant
Set ok = CreateObject("ClassLibNew.ClassAddress")

For Each vari In yah.ClassAddS
    Debug.Print vari.ClassAddress1
    Debug.Print vari.ClassAddrType
    Next
I cant able to read the ClassAddS array of class Address object in the response the error i am getting is variable uses an automation type not supported in vb and the array is fixed or temporiary locked

And above same csharp code if i change the address class declaration as below, then i am able to read the responses from csharp in VB
Code:
[ClassInterface(ClassInterfaceType.AutoDual)]
	[ComVisible(true)]
	public class ClassResponseMsg
	{
		public ClassPersonName ClassNameField = null;
 [System.Xml.Serialization.XmlElementAttribute("classAdds")]
		public  ClassAddress[] classAdds =null;
		
 		
	}
what is issue if i declare a getter and setter for the classaddress?

regards
Pandi G S