如何在 C# 中进行通用服务提供程序调用?
How Can I Make generic Service Provider calls in C#?
假设我有一个 Provider,它为我提供了许多可以远程调用的方法。
MyProviderManager.Provider.CallMyFunction(int x, int y, int z);
我有一个 class 可以通过多种方式使用,在扩展它的另一个 class 中创建特定变量。
例如
[DataContract, Serializable]
public class InfoStatusServices
{
[DataMember]
public int Id { get; set; }
[DataMember]
public char TypeService { get; set; }
[DataMember]
public string IdUser { get; set; }
[DataMember]
public bool ResultStatus { get; set; }
}
还有一个扩展它
[DataContract, Serializable]
public class InfoStatusServicesXPTO : InfoStatusServices
{
[DataMember]
public decimal? Balance { get; set; }
}
我的问题是,假设有几种不同类型的方法使用 class InfoStatusServices
MyProviderManager.Provider.CallMyFunctionDark(InfoStatusServices info);
MyProviderManager.Provider.CallMyFunctionBlue(InfoStatusServices info);
有没有合适的方法让我可以创建一个通用方法来调用这些而不是为所有颜色创建方法?
您可以创建颜色枚举:
public enum Color
{
None = 0, Black = 1, ...
}
然后你可以使用这个参数作为第二个参数。因此,根据颜色具有相同签名的方法可以表示为单一方法:
.CallMyFunction(InfoStatusServices info, Color color)
所以为黑色调用这个方法会像这样:
.CallMyFunction(info, Color.Black)
假设我有一个 Provider,它为我提供了许多可以远程调用的方法。
MyProviderManager.Provider.CallMyFunction(int x, int y, int z);
我有一个 class 可以通过多种方式使用,在扩展它的另一个 class 中创建特定变量。
例如
[DataContract, Serializable]
public class InfoStatusServices
{
[DataMember]
public int Id { get; set; }
[DataMember]
public char TypeService { get; set; }
[DataMember]
public string IdUser { get; set; }
[DataMember]
public bool ResultStatus { get; set; }
}
还有一个扩展它
[DataContract, Serializable]
public class InfoStatusServicesXPTO : InfoStatusServices
{
[DataMember]
public decimal? Balance { get; set; }
}
我的问题是,假设有几种不同类型的方法使用 class InfoStatusServices
MyProviderManager.Provider.CallMyFunctionDark(InfoStatusServices info);
MyProviderManager.Provider.CallMyFunctionBlue(InfoStatusServices info);
有没有合适的方法让我可以创建一个通用方法来调用这些而不是为所有颜色创建方法?
您可以创建颜色枚举:
public enum Color
{
None = 0, Black = 1, ...
}
然后你可以使用这个参数作为第二个参数。因此,根据颜色具有相同签名的方法可以表示为单一方法:
.CallMyFunction(InfoStatusServices info, Color color)
所以为黑色调用这个方法会像这样:
.CallMyFunction(info, Color.Black)