我在不同的命名空间中有两个相同的类:
namespace NP1 {
public class AAA {
public int A {get; set;}
public int B {get; set;}
}
}
namespace NP2 {
public class AAA {
public int A {get; set;}
public int B {get; set;}
}
}
它们在不同的文件中并且是自动生成的。我无法修改它们。
然后我还有另外两个文件:
using NP1;
public class N1Helper {
(...)
var sth = new AAA(A: some_value, B: some_other_value);
(...)
}
和
using NP2;
public class N2Helper {
(...)
var sth = new AAA(A: some_value, B: some_other_value);
(...)
}
这些助手的跳过部分是相同的。
我想简化这两个文件,只写一次代码。如果这些命名空间中的类将实现一个接口(interface),我可以做到。
有什么办法可以解决这个问题...
- 使用泛型?
- 告诉某处后验
NP1.AAA
和NP2.AAA
实现了一个公共(public)接口(interface)?类似于使用部分类并在后期附加接口(interface)信息,但我无法修改自动生成的文件。 - ...?
最佳答案
Using generics
当然,把类型当作泛型参数就行了。您只是无法实际使用泛型参数,因为它没有实现任何接口(interface):
public class NHelper<TAAA> {
(...)
// this is not going to work
// var sth = new TAAA(A: some_value, B: some_other_value);
(...)
}
using partial classes [...] I can't modify the autogenerated files
部分类必须具有 partial
关键字,而您的自动生成类则不需要。所以没有。
...?
同样没有。 C# 不是像 C++ 这样的鸭子类型语言,它在每一层都是强类型语言。您得到的正是您编写的代码,如果您不想编写代码,您将一无所获。
修复自动生成的文件。
关于C# 如何在不修改它们的情况下使用具有相同属性的 2 个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73829138/