是否有可能创建在解决方案资源管理器中分组的部分类,如VS使用类后面的代码(例如,Default.aspx和 Default.aspx.cs).
我想创建MyClass.cs和MyClass.partial.cs,它们不应该在解决方案资源管理器中显示为2个单独的文件.
嘿伙计们,
我正在使用一个叫做ViewModelCollection<BaseViewModel>处理ViewModel列表并提供标准add()和delete()命令的泛型类.
现在我想知道我是否可以使用partial某个ViewModel 的构造"扩展"这个类,其名称是,例如CarViewModel.
这样的事情可能吗?
partial class ViewModelCollection<BaseViewModel>
{
... some command and list stuff ...
}
partial class ViewModelCollection<CarViewModel>
{
... special commands for car view model
}
Run Code Online (Sandbox Code Playgroud) 部分类背后的想法是你可以将某些功能组合在一起.C#中最好的例子是将控件定义放在一个文件中,将事件处理程序放在另一个文件中.在Ruby中,您可以使用Monkey修补来替换整个函数等,以获取代码来执行您想要的操作.
我还没有找到理由这样做,但我认为随着网络的改进,更多的应用程序将在客户端,所以我想知道我在服务器端语言中找到的一些很棒的功能,我也可以在Javascript中使用.
有人知道吗?
我有一个MVC 3站点,但我正在使用非MVC FluentValidation dll.我已经创建了一个验证器类,并在构造函数中放置了所有的RuleFors,然后在我的模型类上设置了一个属性
[FluentValidation.Attributes.Validator(typeof(MyValidator))]
Run Code Online (Sandbox Code Playgroud)
问题是验证器类上的构造函数永远不会被调用.我想这可能是因为我没有使用dll的MVC版本,但后来我也无法让这个版本适用于我.
任何帮助,将不胜感激.
谢谢,
萨钦
partial-classes entity-framework-4 fluentvalidation asp.net-mvc-3
我正在使用EF4.3.这是我的第一个项目,所以我一直在学习.
有些情况下我需要为实体建立额外的构造函数.我创建了一个额外的部分类来执行此操作,因此实体用户将具有关联的类User2.
我注意到EF总体上不会创建构造函数,但是有这样的实例:
public partial class User
{
public User()
{
this.BookmarkedDeals = new HashSet<BookmarkedDeal>();
this.BookmarkedStores = new HashSet<BookmarkedStore>();
}
public System.Guid UserId { get; set; }
public int UserStatusId { get; set; }
public int UserRoleId { get; set; }
public System.DateTime CreatedOn { get; set; }
public System.DateTime LastVisitedOn { get; set; }
public virtual ICollection<BookmarkedDeal> BookmarkedDeals { get; set; }
public virtual ICollection<BookmarkedStore> BookmarkedStores { get; set; }
public virtual Subscriber Subscriber { get; set; }
} …Run Code Online (Sandbox Code Playgroud) 我们正在讨论为工作定义实体类方法的最佳方法 - 作为扩展方法或使用部分类.我们谈论的那种方法不会修改实体的状态,它们纯粹是"帮助"方法,它们询问状态并返回一个值.
这两种方法的主要好处是保持实体类清洁,同时仍然为客户端代码提供intellisense支持.
无论是哪种方式,我都没有强烈的偏好,但我很想知道其他人是否对某一方有偏好(或知道有记录的指导方针).
我开始编写我能想到的每种方法的优点列表,但最后我想出的是:
部分类
方法定义位于类中(即使它是另一个文件),因此Visual Studio工具支持"查找方法"(例如,resharper中的ALT- \)将定位方法
一旦由于使用partial关键字打开实体类,包含辅助方法的其他文件的存在就很明显
扩展方法
其他人可以加入他们的意见吗?
PS我不认为这是以下问题的重复,因为该问题的提问者满足于标记一个响应,该响应将功能差异概述为正确答案,而不回答关于哪种方法是最佳实践的问题在这种情况下: 部分类与扩展方法
编辑 - 我正在寻求人们对一种方法或另一种方法的偏好,因为我们无法找到针对此特定方案的文档指南.这两种方法都是可能的,既不违反任何设计原则,所以这是一个偏好的问题,我想知道你的.
到目前为止,我看到的部分类的最大论点是自动生成的代码.
从Java的角度来说,我不明白为什么这不能简单地使用抽象类完成,不能自动生成的代码仅仅是一个抽象类protected abstract,它预计用户覆盖的方法呢?
除了自动生成的代码案例之外,我看到的每一个案例都非常罕见(编码器只是partial用作黑客),或者它也可以使用abstract已经存在的其他概念来解决.
关于班级设计的问题.目前我有以下结构:
抽象基本存储库类
默认存储库实现类(实现一些抽象方法,其中逻辑通过所有特定类,但保留其他空)
特定的Repository实现类(实现上面的Default类中的空白)
我现在遇到了一个问题,我在Specific类中有一个特定的Update()方法,但是当这个方法中的所有代码都执行一些来自基类的代码时,也应该执行Default类.
我可以这样做
public override Update()
{
// do Specific class actions and updates
// ....
// follow with base.Update()
base.Update();
}
Run Code Online (Sandbox Code Playgroud)
但是这需要在所有继承的方法中调用base.XYZ().我能以某种方式解决这个问题吗?
因此,要求是在父类和继承类中都有代码(或者使用partial来使这两个类成为一个类),并且应该执行两个地方的方法实现中的代码.另外,如果我想转而执行基类代码,然后继承类代码呢?
谢谢
ColdFusion是否提供将CFC拆分为多个文件的机制?我不是在谈论扩展,我在谈论将SAME CFC拆分成多个文件; 与C#允许"部分"类相同的方式.这是因为我使用T4生成一堆CFC,我希望能够通过在另一个文件中将功能标记到生成的CFC上.我想以不违反开放原则的方式这样做.
可能重复:
是否可以在两个项目中声明一个分部类
说在我的项目解决方案中,我有两个项目,ProjectA和ProjectB.ProjectA创建:MyClassA
然后ProjectB引用了ProjectA.是否可以在ProjectB中为ProjectA的MyClassA创建部分类?
我的项目A的MyClassA:
namespace TestPartial
{
public class MyClassA
{
public string MyName { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
我的项目B的MyClassB:
namespace TestPartial
{
public partial class MyClassA
{
public DateTime BirthDate { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
但显然这两个属性都没有合并....所以我想只有它们只在同一个项目中才能工作?或者有一些解决方法吗?
partial-classes ×10
c# ×6
.net ×2
asp.net ×1
cfc ×1
coldfusion ×1
createobject ×1
generics ×1
inheritance ×1
javascript ×1