C# 如何从Visual Basic访问C中类的属性?
在上面的主题中我需要帮助。我已经完成了VB6应用程序使用C dll所需的一切工作。我已经到了无法访问类的属性来获取ID的地步 我将此函数称为C函数:C# 如何从Visual Basic访问C中类的属性?,c#,generics,vb6,com-interop,C#,Generics,Vb6,Com Interop,在上面的主题中我需要帮助。我已经完成了VB6应用程序使用C dll所需的一切工作。我已经到了无法访问类的属性来获取ID的地步 我将此函数称为C函数: public resultRetrieveWIP RetrieveWIP(string serialNumber) { string header = string.Format("Bearer {0}", User.Token); var request = new RestRequest(); request.M
public resultRetrieveWIP RetrieveWIP(string serialNumber)
{
string header = string.Format("Bearer {0}", User.Token);
var request = new RestRequest();
request.Method = Method.GET;
request.Resource = "api/wips";
request.AddParameter("serialNumber", serialNumber);
request.AddHeader("Authorization", header);
var client = new RestClient(_iFactoryURL);
var response = client.Execute(request);
var uri = client.BuildUri(request);
_lastRequest = uri.ToString();
_lastResponse = response.Content;
try
{
var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore };
return JsonConvert.DeserializeObject<resultRetrieveWIP>(response.Content,settings);
}
catch
{
throw new Exception(jsonErrorHandler("RetrieveWIP",response.Content));
}
}
我在标有****的行代码处有问题
它给出了一个错误
参数数目错误或属性分配无效
获取id属性值的正确方法是什么?在VB6中不受支持,因此您无法访问t项列表,这正是getWIP.wips0所做的。您可以在resultRetrieveWIP类中改用非泛型集合:
有关更多详细信息,请参阅以下文章:在VB6中不受支持,因此无法访问t项列表,这就是getWIP.wips0所做的。您可以在resultRetrieveWIP类中改用非泛型集合:
有关更多详细信息,请参阅以下文章:如前所述,泛型不能导出到COM
一个选项是添加单独的IEnumerable包装器属性,以便通过COM访问,如下所示:
public class resultRetrieveWIP
{
public List<wip> wips { get; set; }
[ComVisible(true)]
public IEnumerable GetWipsCOM() => wips;
}
通过这种方式,C内部的代码可以使用正确的全类型泛型列表,而无需任何更改,VB6或任何其他COM使用者也可以访问数据
COM和VB6支持IEnumerable。ie可以通过VB6中的GetWipsCOM的结果为每一个函数进行计算。如前所述,泛型不能导出到COM
一个选项是添加单独的IEnumerable包装器属性,以便通过COM访问,如下所示:
public class resultRetrieveWIP
{
public List<wip> wips { get; set; }
[ComVisible(true)]
public IEnumerable GetWipsCOM() => wips;
}
通过这种方式,C内部的代码可以使用正确的全类型泛型列表,而无需任何更改,VB6或任何其他COM使用者也可以访问数据
COM和VB6支持IEnumerable。ie您将能够通过VB6中GetWipsCOM的结果为每一个进行计算。VB6!=由于您的c代码dll需要RestSharp,json newtonsoft libs将被添加到您的vb6项目中。但据我所知,这些库不支持VB6环境。您正在尝试使用最新技术回到旧技术环境。所有其他功能都可以正常工作。甚至还有一个登录函数,它将返回一个令牌,并且工作正常。VB将只调用类函数,C将实现RestSharp和json方法。然而,我不认为这是这里的问题。让我重新表述一下我的问题,给定一个基本的C代码,从VB访问类型类属性的正确方法是什么?你能告诉我在“Set getWIP=oIFactory.RetrieveWIPstrSerialNumber”VB6!=由于您的c代码dll需要RestSharp,json newtonsoft libs将被添加到您的vb6项目中。但据我所知,这些库不支持VB6环境。您正在尝试使用最新技术回到旧技术环境。所有其他功能都可以正常工作。甚至还有一个登录函数,它将返回一个令牌,并且工作正常。VB将只调用类函数,C将实现RestSharp和json方法。然而,我不认为这是这里的问题。让我重新表述我的问题,给定一个基本的C代码,从VB访问类型类属性的正确方法是什么?你能告诉我在“Set getWIP=oIFactory.RetrieveWIPstrSerialNumber”中得到了什么对象吗
public class resultRetrieveWIP
{
public Collection wips { get; set; }
}
public class resultRetrieveWIP
{
public List<wip> wips { get; set; }
[ComVisible(true)]
public IEnumerable GetWipsCOM() => wips;
}