C#:将 class 的实例从一个模块传递到另一个模块
C#: pass an instance of a class from one module to another
我有两个模块,它们可以同时存在于目标中,也可以单独存在。我们称它们为 ModuleA
和 ModuleB
.
ModuleA
有一个特定的类型,我想在 ModuleB
中使用它,我们称它为 SpecificType
。但是,我仍然希望能够自己包含 ModuleB
(没有 ModuleA
)。
是否可以通过使用接口/协议来解决这个问题?我感兴趣的是具有特定接口的对象将作为参数传递,因此不可能传递例如一个字符串。
ModuleB
中的示例方法:
// SpecificType is coming from ModuleA
public void MyMethod(SpecificType myVariableName) {
}
我可能想要的是类似这样的东西:
// SpecificType is coming from ModuleA, SpecificTypeInterface from ModuleB
// SpecificType implicitly conforms to SpecificTypeInterface
public void MyMethod(SpecificTypeInterface myVariableName) {
}
如果您有一些模块需要共享 interface/type,但您不希望这些模块之间存在依赖关系,则需要定义 interface/type.
的其他模块
通常此其他模块具有前缀 Abstractions
,例如 Microsoft.Extensions.Logging.Abstractions or xunit.abstractions。
在你的情况下:
模块抽象
public interface ISpecificTypeInterface
{
void Foo();
}
模块A
public class SpecificType : ISpecificTypeInterface
{
public void Foo()
{
Console.WriteLine("From ModuleA")
}
}
模块B
public void MyMethod(ISpecificTypeInterface spe)
{
spe.Foo();
}
ModuleA 和 ModuleB 依赖于 ModuleAbstractions。
我有两个模块,它们可以同时存在于目标中,也可以单独存在。我们称它们为 ModuleA
和 ModuleB
.
ModuleA
有一个特定的类型,我想在 ModuleB
中使用它,我们称它为 SpecificType
。但是,我仍然希望能够自己包含 ModuleB
(没有 ModuleA
)。
是否可以通过使用接口/协议来解决这个问题?我感兴趣的是具有特定接口的对象将作为参数传递,因此不可能传递例如一个字符串。
ModuleB
中的示例方法:
// SpecificType is coming from ModuleA
public void MyMethod(SpecificType myVariableName) {
}
我可能想要的是类似这样的东西:
// SpecificType is coming from ModuleA, SpecificTypeInterface from ModuleB
// SpecificType implicitly conforms to SpecificTypeInterface
public void MyMethod(SpecificTypeInterface myVariableName) {
}
如果您有一些模块需要共享 interface/type,但您不希望这些模块之间存在依赖关系,则需要定义 interface/type.
的其他模块通常此其他模块具有前缀 Abstractions
,例如 Microsoft.Extensions.Logging.Abstractions or xunit.abstractions。
在你的情况下:
模块抽象
public interface ISpecificTypeInterface
{
void Foo();
}
模块A
public class SpecificType : ISpecificTypeInterface
{
public void Foo()
{
Console.WriteLine("From ModuleA")
}
}
模块B
public void MyMethod(ISpecificTypeInterface spe)
{
spe.Foo();
}
ModuleA 和 ModuleB 依赖于 ModuleAbstractions。