[ComVisible(true)] public class Address {} [ComVisible(true)] public class VerifiedAddress : Address {}then the inherited properties are visible directly and you can access properties on VerifiedAddress. This is why this worked with COM initially because you had the COM attributes at the top (this may also work just by have the ComClass attribute but not quite sure)
>do wwDotNetBridge >local loBridge as wwDotNetBridge >clear >loBridge = createobject("wwDotNetBridge", "V4") >if vartype(loBridge) = 'O' > if loBridge.LoadAssembly("C:\_Siriusware\Main\Siriusware.Library\Siriusware.Library.AddressVerification\bin\Debug\Siriusware.Library.AddressVerification.dll") > > loOriginalAddress = loBridge.Createinstance("Siriusware.Library.AddressVerification.Address") >* loVerifiedAddress = loBridge.Createinstance("Siriusware.Library.AddressVerification.VerifiedAddress") > loOriginalAddress.Address1 ="2170 S Josephine St Unit 1&/>" > loOriginalAddress.Address2 = "" > loOriginalAddress.City = "Denver" > loOriginalAddress.Country = "Bad" > loOriginalAddress.State = "CO" > loOriginalAddress.Zip = "80210" > > >*!* loOriginalAddress = createobject('empty') >*!* >*!* addproperty(loOriginalAddress, 'Address1', "2170 S Josephine St Unit 1&/>") >*!* addproperty(loOriginalAddress, 'Address2', "") >*!* addproperty(loOriginalAddress, 'City', "Denver") >*!* addproperty(loOriginalAddress, 'State', "CO") >*!* addproperty(loOriginalAddress, 'Zip', "80210") >*!* addproperty(loOriginalAddress, 'Country', "BAD") > > loVerifiedAddress = loBridge.InvokeStaticMethod("Siriusware.Library.AddressVerification.VerifiedAddress", ; > "VerifyAddress", loOriginalAddress) > ? loBridge.GetProperty(loVerifiedAddress, "Result") > ? loBridge.GetProperty(loVerifiedAddress, "Zip") > > > else > _cliptext = loBridge.cErrorMsg > ? loBridge.cErrorMsg > endif >endif >>
>namespace Siriusware.Library.AddressVerification >{ > //[ComVisible(true)] > //[ClassInterface(ClassInterfaceType.AutoDual)] > //[ProgId("SysManager.Address")] > public class Address > { > public string Address1 { get; set; } > public string Address2 { get; set; } > public string City { get; set; } > public string State { get; set; } > public string Zip { get; set; } > public string Country { get; set; } > } > > //[ComVisible(true)] > //[ClassInterface(ClassInterfaceType.AutoDual)] > //[ProgId("SysManager.VerifiedAddress")] > public class VerifiedAddress : Address > { > public string Result { get; set; } > public string ErrorMsg { get; set; } > > public static VerifiedAddress VerifyAddress(Address originalAddress) > { > AppInfo.ModuleName = "SysManager"; > > VerifiedAddress verifiedAddress = new VerifiedAddress(); > > String address = originalAddress.Address1; > String address2 = originalAddress.Address2; > String city = originalAddress.City; > String state = originalAddress.State; > String zip = originalAddress.Zip; > String country = originalAddress.Country; > > String result = ""; > try > { > result = Cass.VerifyAddress(ref address, ref address2, ref city, ref state, ref zip, ref country); > verifiedAddress.Result = result; > verifiedAddress.Address1 = address; > verifiedAddress.Address2 = address2; > verifiedAddress.City = city; > verifiedAddress.State = state; > verifiedAddress.Zip = zip; > verifiedAddress.Country = (country=="United States of America")?"USA":country; > } > > catch (Exception ex) > { > Logging.Log(ex.ToString()); > verifiedAddress.ErrorMsg = ex.ToString(); > } > > return verifiedAddress; > } > } >}>
>>>? loBridge.GetProperty(loVerifiedAddress, "Result") >>> ? loBridge.GetProperty(loVerifiedAddress, "Zip")>>>
>>>>loBridge = GetwwDotnetBridge() >>>> >>>>LOCAL loOriginalAddress as SysManager.Address >>>>LOCAL loVerifiedAddress as SysManager.VerifiedAddress >>>>loBridge.LoadAssembly("Sysmanager.dll") && assume it's in path >>>>loOriginalAddress = loBridge.CreateInstance("SysManager.Address") >>>>loOriginalAddress.Address1 ="2170 S Josephine St Unit 1&/>" >>>>loOriginalAddress.Address2 = "" >>>>loOriginalAddress.City = "Denver" >>>>loOriginalAddress.Country = "Bad" >>>>loOriginalAddress.State = "CO" >>>>loOriginalAddress.Zip = "80210" >>>> >>>>loVerifiedAddress = loBridge.CreateInstance("SysManager.VerifiedAddress") >>>>loVerifiedAddress = loVerifiedAddress.VerifyAddress(loOriginalAddress) >>>>?loVerifiedAddress.Result >>>>?loVerifiedAddress.Country >>>>>>>>
>>>>>LOCAL loOriginalAddress as SysManager.Address >>>>>LOCAL loVerifiedAddress as SysManager.VerifiedAddress >>>>>loOriginalAddress = CREATEOBJECT("SysManager.Address") >>>>>loOriginalAddress.Address1 ="2170 S Josephine St Unit 1&/>" >>>>>loOriginalAddress.Address2 = "" >>>>>loOriginalAddress.City = "Denver" >>>>>loOriginalAddress.Country = "Bad" >>>>>loOriginalAddress.State = "CO" >>>>>loOriginalAddress.Zip = "80210" >>>>> >>>>> >>>>>loVerifiedAddress = CREATEOBJECT("SysManager.VerifiedAddress") >>>>> >>>>>loVerifiedAddress = loVerifiedAddress.VerifyAddress(loOriginalAddress) >>>>> >>>>>?loVerifiedAddress.Result >>>>> >>>>>?loVerifiedAddress.Country>>>>>
>>>>>>>>loNet = loBridge.Createinstance("Westwind.WebConnection.TypePassingTests") >>>>>>>> >>>>>>>>*** Create ComValue objects for each parameter >>>>>>>>loInt = loBridge.CreateComValue() >>>>>>>>loInt.Value = INT(10) >>>>>>>>loString = loBridge.CreateComValue() >>>>>>>>loString.Value = "Hello World." >>>>>>>>loDecimal = loBridge.CreateComValue() >>>>>>>>loDecimal.Value = CAST( 5.22 as Currency) >>>>>>>> >>>>>>>>lobridge.InvokeStaticMethod("Westwind.WebConnection.TypePassingTests",; >>>>>>>> "PassByReferenceStatic",; >>>>>>>> loInt,loString,loDecimal) >>>>>>>> >>>>>>>>*** Look at the result values >>>>>>>>? loInt.Value, loString.Value, loDecimal.Value >>>>>>>>>>>>>>>>
>>>>>>>>>static public string VerifyAddress( ref string AddressLine1, ref string AddressLine2, ref string City, ref string State, ref string ZipCode, ref string Country)>>>>>>>>>
>>>>>>>>>lcResult = loBridge.Invokestaticmethod("Siriusware.Library.Cass", "VerifyAddress", @Address1, @Address2, @City, @State, @Zipcode, @Country) >>>>>>>>> ?Address1 >>>>>>>>> ?ZipCode >>>>>>>>> >>>>>>>>> ?lcResult >>>>>>>>>>>>>>>>>>
>>>>>>>>>>>do wwDotNetBridge >>>>>>>>>>>local loBridge as wwDotNetBridge >>>>>>>>>>>loBridge = createobject("wwDotNetBridge", 'V4') >>>>>>>>>>>if vartype(loBridge) = 'O' >>>>>>>>>>> if loBridge.LoadAssembly("Siriusware.Library.dll") >>>>>>>>>>> >>>>>>>>>>> Address1 = "2170 S Josephine St Unit 1" >>>>>>>>>>> Address2 = "" >>>>>>>>>>> City = "Denver" >>>>>>>>>>> State = "CO" >>>>>>>>>>> Zipcode = "80210" >>>>>>>>>>> Country = "USA" >>>>>>>>>>> >>>>>>>>>>> * string sResult = Cass.VerifyAddress( ref Address1, ref Address2, ref City, ref State, ref Zipcode, ref Country); >>>>>>>>>>> >>>>>>>>>>> loCass = loBridge.CreateInstance("Cass") >>>>>>>>>>> if isnull(loCass) >>>>>>>>>>> ? loBridge.cErrorMsg >>>>>>>>>>> return >>>>>>>>>>> endif >>>>>>>>>>> >>>>>>>>>>> *loPop.Connect("mail.gorge.net",587,.f.) >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> * loPop.Connect("mail.gorge.net",587,.f.) >>>>>>>>>>> *? loBridge.InvokeMethod(loPop,"Connect","pop3.gorge.net",110,.f.) >>>>>>>>>>> >>>>>>>>>>> ? loCass.VerifyAddress(@Address1, @Address2, @City, @State, @Zipcode, @Country) >>>>>>>>>>> endif >>>>>>>>>>>endif >>>>>>>>>>>>>>>>>>>>>>