跨项目扩展类的属性和方法

时间:2014-10-06 19:18:10

标签: c#

所以我们想要的是一个扩展到许多模块的库,每个模块都添加各自的功能。例如我们的基类。

public class Account {
  public string Username;
}

然后在一个单独的包中(假设是ActiveDirectory包)

public partial class Account {
  public UserPrincipal Principal;
}

将我们的Account类扩展为

public class Account {
  public string Username;
  public UserPrincipal Principal;
}

但是,仅在同一项目中 支持使用partial关键字。我也不想只将Account扩展到ADAccount,因为其他模块会想要添加自己的属性和方法,并且没有类的结构化层次结构。扩展方法是一种可能性,但它们只是方法,它们不能将任何其他数据存储到类中。

实际用例

我希望用户能够

Install-Package BaseLibrary

并获取public class Account { public string Username }或运行

Install-Package BaseLibrary
Install-Package BaseLibrary-ActiveDirectory
Install-Package BaseLibrary-Twitter

并获取

public class Account {
  public string Username;
  public UserPrincipal Principal;
  public Twitter TwitterUser;
}

如何做到这一点?

虽然ExpandoObject可以做到这一点,但我显然更喜欢静态类型选项。

0 个答案:

没有答案