所以我们想要的是一个扩展到许多模块的库,每个模块都添加各自的功能。例如我们的基类。
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
可以做到这一点,但我显然更喜欢静态类型选项。