首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从c#代码向exe传递多个参数(多于3个)

如何从c#代码向exe传递多个参数(多于3个)
EN

Stack Overflow用户
提问于 2015-12-10 15:02:06
回答 3查看 712关注 0票数 0

我正在尝试从C#代码调用exe,并且我需要传递2个数组(array1,array2),1个N×3矩阵(M1)和2个数字(int1,double2)。我发现了一个与我相似的问题:How to send multiple parameters to exe from c# code

代码语言:javascript
复制
ProcessStartInfo startInfo = new ProcessStartInfo(string.Concat(exePath, "abc.exe")); 

string[] cParams = new string[] { "dev", "Line1", "1" };

startInfo.Arguments = string.Format("-e {0} -l {1} -q {2}", cParams);

有人能告诉我如何解决我的问题吗?非常感谢!

EN

回答 3

Stack Overflow用户

发布于 2015-12-10 15:09:57

参数始终是字符串。通过参数将数组或矩阵传递给程序的唯一方法是将其转换为字符串。请注意,您的目标应用程序也应该使用此格式,并且必须将其反序列化。

现在,这取决于您的实现。对我来说,我推荐使用JSON和JSON.NET库:

代码语言:javascript
复制
// Serialize array to a string
int[] vals = new int[] { 1, 2, 3, 4, 5 };
string valsArgument = JsonConvert.SerializeObject(vals); // "[1,2,3,4,5]"

// In your target application
int[] vals = JsonConvert.DeserializeObject<int[]>(argument1);

数组已从调用的应用程序传输到被调用的应用程序。

请注意,以这种方式使用参数可能不是一个好主意。可能,您需要使用外部文件或其他文件。

票数 0
EN

Stack Overflow用户

发布于 2015-12-10 15:10:23

一个concole应用程序(我假设您会提到它)可以处理以字符串数组形式提供的任意数量的参数。这就是你的数组的问题:除了简单的字符串,你不能传递任何不同的东西。因此,您可以展平您的数组,但您将丢失所有参数属于一起的信息。您可能会为每个数组添加一个长度参数,但我猜这会变得非常烦人:myapp.exe v11 v12 v13 3 v21 v22 2 v33 v34 v35 v36 4,这意味着类似于

获取前三个参数并将它们连接到一个数组中,然后对下面的两个和四个参数执行相同的操作

相反,您可以将所有这些参数写入一个反映参数结构的外部文件(JSON、XML),并使用某种反序列化在您的应用程序中读取它们。

票数 0
EN

Stack Overflow用户

发布于 2018-11-01 18:15:25

您可以在.NET中使用DataContractJsonSerializer将段落序列化为字符串。Here就是一个例子。

代码语言:javascript
复制
// Create a User object and serialize it to a JSON stream.  
public static string WriteFromObject()  
{  
    //Create User object.  
    User user = new User("Bob", 42);  

    //Create a stream to serialize the object to.  
    MemoryStream ms = new MemoryStream();  

    // Serializer the User object to the stream.  
    DataContractJsonSerializer ser = new 
    DataContractJsonSerializer(typeof(User));  
    ser.WriteObject(ms, user);  
    byte[] json = ms.ToArray();  
    ms.Close();  
    return Encoding.UTF8.GetString(json, 0, json.Length);  
}  

// Deserialize a JSON stream to a User object.  
public static User ReadToObject(string json)  
{  
    User deserializedUser = new User();  
    MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json));  
    DataContractJsonSerializer ser = new 
    DataContractJsonSerializer(deserializedUser.GetType());  
    deserializedUser = ser.ReadObject(ms) as User;  
    ms.Close();  
    return deserializedUser;  
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34195628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档