C# 如何在一个方法中检查对象JSON和流的数据是否为空
我有两种方法ImportJson和ImportStreamC# 如何在一个方法中检查对象JSON和流的数据是否为空,c#,generics,C#,Generics,我有两种方法ImportJson和ImportStream 以DataImportJsonObject作为输入参数的方法ImportJson(DataImportJsonObject是一个对象) 以stream作为输入参数的方法ImportStream: public void导入流(流请求) { 如果(请求长度
- 以DataImportJsonObject作为输入参数的方法ImportJson(DataImportJsonObject是一个对象)
- 以stream作为输入参数的方法ImportStream:
public void导入流(流请求)
{
如果(请求长度<0)
{
字符串messageResult=“EmptyData”;
}
}
事实上,通过这两个方法,我想检查enter数据是否为null,
我只想创建一个方法来同时检入:如果输入是流或对象
我尝试使用泛型方法,但我对流的长度检查有问题
public class MyGenericClass<T>
{
private T genericMemberVariable;
public MyGenericClass(T value)
{
genericMemberVariable = value;
}
public T genericMethod(T genericParameter)
{
if (genericParameter == null)
{
//...
}
if (genericParameter is Stream)
{
genericParameter.Length // It is not possible this treatment
}
return genericMemberVariable;
}
}
公共类MyGenericClass
{
私有T genericMemberVariable;
公共MyGenericClass(T值)
{
genericMemberVariable=值;
}
公共T genericMethod(T genericParameter)
{
如果(genericParameter==null)
{
//...
}
if(genericParameter为流)
{
genericParameter.Length//此处理不可能
}
返回genericMemberVariable;
}
}
如何编写此代码?或者如果有其他建议或建议来实现我的目标?
谢谢,您可以使用铸造:
if (genericParameter is Stream)
{
var length = (genericParameter as Stream).Length;
}
您可以使用铸造:
if (genericParameter is Stream)
{
var length = (genericParameter as Stream).Length;
}
要访问
.Length
,您需要强制转换
这可以使用模式匹配干净地完成:
if (genericParameter is Stream stream)
{
stream.Length // now ok
}
要访问
.Length
,您需要强制转换
这可以使用模式匹配干净地完成:
if (genericParameter is Stream stream)
{
stream.Length // now ok
}
为什么不简单地将其强制转换为:
(genericparameteras Stream).Length
,以及为什么要创建一个方法?维护这样的代码是很困难的,为什么不简单地将其强制转换为:(genericParameter为Stream)。Length
,以及为什么要创建一个方法?维护这样的代码将很困难。他希望该方法用于除流
(genericParameter作为流)之外的其他类型。
无需在此处使用null运算符,您的if将对此进行检查。@Step Up welcome,我更愿意提及这一点,而不是让它过去:)@đěxě是的,这是一个重要的通知!我喜欢!伟大的谢谢!:)他希望该方法用于除流
(genericParameter为流)以外的类型。
无需在此处使用null运算符,您的if将对此进行检查。@Step Up welcome,我更愿意提及这一点,而不是让它过去:)@đěxěŕ是的,这是一个重要的通知!我喜欢!伟大的谢谢!:)