Create a generic List from C# dll in python script
Using my C# dll in TestComplete as CLR Bridge and want to create a python script routine where I initialize the settings.SpecificValue with a List of SpecificValueClass Objects. Does someone know how to do this?
Here more details about my code:
var settings = new SettingsClass();
settings.SpecificValue = new List<SpecificValueClass>();
This is the code example in my C# project.
I have a python script which imports the .dll with this code example and I want to create this settings.SpecificValue variable within the python script.
Is it somehow possible without making a function in C# which I can call within python code.
public class SettingsClass
{
public bool Timesync { get; set; }
public string SystemName { get; set; }
public string Timezone { get; set; }
public List<SpecificValueClass> SpecificValue{ get; set; }
}
public class SpecificValueClass
{
public string ID { get; set; }
public int value { get; set; }
}
In python I want to call it like this:
settings = SettingsClass() <-- this call is no problem and I can do it with a dotNet library in python
settings.SystemName = systemname
settings.Timesync = timesync
settings.Timezone = "%s//%s" % (timezone1,timezone2)
settings.SpecificValue = ... <-- not sure how to make this to create a empty List / empty whatever so I can add 2 objects of the type SpecificValueClass
(creating the 2 objects ob SpecificValueClass is also possible) So the only part that I can not get to work is the initialization of the settings.SpecificValue as it is a generic List ...
Any help would be appreciated
typeListOf = dotNET.System.Type.GetType("System.Collections.Generic.List`1") objType = dotNET.namespace.SpecificValueClass.zctor().GetType() paramTypes = dotNET.System.Array.CreateInstance(dotNET.System.Type.GetType("System.Type"), 1) paramTypes.SetValue(objType, 0) typeListOfString = typeListOf.MakeGenericType(paramTypes) newValue = dotNET.namespace.WattPeakValues.zctor() newValue.ID = 1 settings.SpecificValue.Add(newValue)
Got it to work! You have to programm the part that usually C# makes for you with the <T> ... little confusing but it works now