C# 两种不同的类型,一种方法在C中实现#
实现此场景的最佳方法是什么: 有服务方法和两种类型,它们仅在列表项类型上有所不同:C# 两种不同的类型,一种方法在C中实现#,c#,C#,实现此场景的最佳方法是什么: 有服务方法和两种类型,它们仅在列表项类型上有所不同: public long MyMethod(MyType request) {...} 另外,我有两种几乎相似的型号: public class MyType { public int amount {get; set;} public List<MyDetailsType> details {get; set;} } public class MyType2 { publi
public long MyMethod(MyType request) {...}
另外,我有两种几乎相似的型号:
public class MyType {
public int amount {get; set;}
public List<MyDetailsType> details {get; set;}
}
public class MyType2 {
public int amount {get; set;}
public List<MyDetailsType2> details {get; set;}
}
适用于两种请求类型,而无过载?接口?抽象类?事实上的
而且该方法只调用一次,所以泛型类型不起作用,因为该方法需要定义参数类型,直到未设置变量,我才知道参数类型
应用程序流程如下所示:
- 获取请求
- 请求是根据某些条件生成的MyType或MyType2
- 调用MyMethod
下面是一个可能的解决方案:
公共长MyMethod(MyBaseType请求){…}
公共抽象类MyBaseType
{
公共整数金额{get;set;}
公共列表详细信息{get;set;}
}
公共类MyType:MyBaseType
{
//附加代码
}
公共类MyType2:MyBaseType
{
//附加代码
}
如果派生类不需要额外的代码,则可以只使用一个类(不带
抽象
关键字)
Method1
代码如下所示:
void方法1(SomeType请求)
{
如果(a)
请求=新的MyBaseType();
其他的
请求=新的MyBaseType();
我的方法(请求);
}
根据涉及的操作,另一个选项可能是使MyType
通用:public class MyType{…List details;}
是的,我的第一种方法是这样的,但是当我们创建时:MyTypeAbstract someRequest;如果(someLogic){someRequest=new MyType()}或者{someRequest=new MyType2()}当并非所有子对象属性都在该变量上时,这看起来不正常,因为它的类型是抽象类类型。Klaus-那么如何在该方法中使用它?它是通过接口实现的。我需要为它提供参数类型。方法的调用也是一个。所以我写了“取决于所涉及的操作”。为了得到更明确的答案,我们需要知道您正在使用MyType做什么。如果不需要额外的代码怎么办?这些都是模型类,只因详细信息类型不同而不同?在if中分配变量时会出现问题,因为在初始化它时,它需要类型var request
这不是有效的语句。但是我真的觉得OP需要提供更多的信息和背景,然后我们才能开始为这个问题提供好的解决方案。var不起作用,VS要求正确的类型,我以前不知道@rokash Method1()的方法签名是什么?
public long MyMethod(MyType request) {...}
Method1(SomeType request) {
var request;
if(a) {
request = new MyType();
} else {
request = new MyType2();
}
MyMethod(request);
}