有没有办法让部分类'构造函数调用另一个我或不可能定义的方法?
基本上我的部分类构造函数是定义的:
public partial class Test
{
public Test()
{
//do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
我希望能够以某种方式插入额外的代码,以便在调用类构造函数后运行.
另外,有没有办法在调用构造函数后有多个文件注入额外的代码?
我有一个界面,我想在快速谷歌搜索后在单独的类中实现,显然,Java没有部分类.有没有办法可以做到这一点,还是我把所有代码都扔进一个类?
基本上,我正在尝试编写服务.一些服务方法确实属于他们自己的类,并且在同一个类中看起来有点不合逻辑.这是我想要做的一个例子.
package com.upmc.esdm.messaging.epcd.service;
import java.util.List;
import javax.ejb.Remote;
import com.upmc.esdm.messaging.epcd13jpa.entities.EmailDomainTrust;
@Remote
public interface MessagingInterfaceRemote {
public List<EmailDomainTrust> getEmailDomains();
public int upDateQualityTable();
public string isLogial();
public byte[] ToWritePartialClassesInJava();
}
Run Code Online (Sandbox Code Playgroud)
我通常会在C#中使用部分类,我会将类似的值返回到一个部分类(或者更新一个类中的记录的类).我该如何实现?或者我应该将所有方法实现放在一个类中?
谢谢.
我在我的MVC项目中有一个Model类.
public partial class Manager : Employee
{
public string Name {get;set;}
public int Age {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
而这个类我在同一个项目中的App_Code文件夹中.现在我想知道我的这个类是否还需要从Employee类继承或不是?
public partial class Manager
{
public void SaveEmployee();
}
Run Code Online (Sandbox Code Playgroud)
我必须这样做是因为我的客户要我移动App_Code文件夹中处理数据库的所有方法.
是的,这两个类共享相同的命名空间.
我对C#很新,所以请耐心等待......
我正在实现一个部分类,并希望添加两个属性,如下所示:
public partial class SomeModel
{
public bool IsSomething { get; set; }
public List<string> SomeList { get; set; }
... Additional methods using the above data members ...
}
Run Code Online (Sandbox Code Playgroud)
我想这两个数据成员初始化:IsSomething要True和SomeList到new List<string>().通常我会在构造函数中执行它,但是因为它是一个部分类我不想触及构造函数(我应该吗?).
实现这一目标的最佳方法是什么?
谢谢
PS我在ASP.NET MVC中工作,为某个模型添加功能,因此是部分类.
是否有一种标准方法,用于生成API文档的工具处理部分类的XML样式注释?基本上,应该如何评论部分类/方法,以便生成的帮助文档不被破坏?这个问题可能因使用的工具而异,在这种情况下,我想最重要的两个工具是:
我不希望我的XML文档出来时髦
/// <summary>Some Foo class</summary>
public partial class Foo { ... }
/// <summary>Some Foo class that implements some interface.</summary>
public partial class Foo : ISomeInterface { ... }
Run Code Online (Sandbox Code Playgroud) 我正在为我的雇主对第三方产品进行相当广泛和持续的修改.实现我的代码时的一个主要考虑因素是尽可能地将其隔离,以使来自供应商的更改集成尽可能轻松.到目前为止,实现这一目标的最有用的工具之一是部分类.使用部分类我能够保留我必须在他们自己的文件中实现的任何新方法.
但今天我打了一个打嗝,我需要解决一些问题.假设我需要扩展以下界面.
public partial interface ICondition
{
void MethodA();
void MethodB();
}
Run Code Online (Sandbox Code Playgroud)
通过使接口部分并添加名为ICondition.CompanyName.cs的文件
public partial interface ICondition
{
void MethodC();
}
Run Code Online (Sandbox Code Playgroud)
现在我想要做的是落实以同样的方式接口我宣布它,与MethodA()及MethodB()在部分类的一个文件来实现,而MethodC()在另一个.
public partial class Condition : ICondition
{
public void MethodA(){ }
public void MethodB(){ }
}
Run Code Online (Sandbox Code Playgroud)
和我的类Condition.CompanyName.cs
public partial class Condition : ICondition
{
public void MethodC() { }
}
Run Code Online (Sandbox Code Playgroud)
这当然不起作用,因为接口必须在同一个文件中实现.我希望有一些声明,或者我不知道的一些语法魔法,这将允许我做我想做的事情,并将这些方法保存在单独的文件中,但是相同的接口.
这确实有效,我的问题是由于愚蠢的拼写错误,我在不同的命名空间中有了我的2个部分类.我想,今天早上我开始有点太早了,感谢大家的时间和关注.
我正在使用Entity Framework 4.1开发一个ASP.Net MVC 3 Web应用程序,我对使用数据注释进行表单验证感到困惑.我总是将ViewModel返回给View而不是传递实际对象,因为我意识到这是不好的做法.例如:
public class ViewModelTeam
{
public Team Team { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的观点可能会有这样的东西
@model UI.ViewModels.ViewModelTeam
@Html.HiddenFor(model => model.Team.teamID)
<div class="editor-label">
@Html.LabelFor(model => model.Team.description)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Team.description)
@Html.ValidationMessageFor(model => model.Team.description)
</div>
Run Code Online (Sandbox Code Playgroud)
为了验证这个View,我在部分类中创建了数据注释,就像这样
[MetadataType(typeof(TeamMetaData))]
public partial class Team
{
public class TeamMetaData
{
[DisplayName("Team Name")]
[Required(ErrorMessage = "Please enter a Team Name")]
public object description { get; set; }
Run Code Online (Sandbox Code Playgroud)
然后在我的创建控制器中我有这个
[HttpPost]
public ActionResult Create(Team team)
{
if (ModelState.IsValid)
{
//Add team and redirect …Run Code Online (Sandbox Code Playgroud) C#有这个伟大的概念,其中一个类可以分布在多个.cs文件中.这对于你想要一个单个对象(所有代码都需要的成员变量)而且需要大量代码的地方非常有用.然后,您可以通过源文件中的功能传播此代码.
有没有办法在Java中这样做?
更新:首先我告诉自己,这必须是一个大型类(它执行DOCX文件内容的布局).但是在发布之后我更多地考虑了它并且它真的困扰我,这是一个大的(目前5000多行)类.
所以我想了一些替代方案,想出了一个很好的方法将它分解为一个主类和大约20个辅助类.这种方式非常好,真正将功能分离到每个部分.
所以...虽然我认为部分类有时是一个有用的结构,但在这种情况下,缺少部分类使我想出了更好的设计.(这与最初的问题无关,但我认为值得分享.)
根据MSDN文档的部分类:
部分方法是隐式私有的
所以你可以拥有这个
// Definition in file1.cs
partial void Method1();
// Implementation in file2.cs
partial void Method1()
{
// method body
}
Run Code Online (Sandbox Code Playgroud)
但你不能拥有这个
// Definition in file1.cs
public partial void Method1();
// Implementation in file2.cs
public partial void Method1()
{
// method body
}
Run Code Online (Sandbox Code Playgroud)
但为什么会这样呢?是否有某些原因编译器无法处理公共部分方法?
根据MSDN文档的部分类:
所有部件必须具有相同的可访问性,例如public,private等.
但是如果您创建一个WindowsForm应用程序,您将在两个分部类中具有默认的Form类.
背后的代码:
public partial class Form1 : Form
{
...
}
Run Code Online (Sandbox Code Playgroud)
和设计师:
partial class Form1
{
...
}
Run Code Online (Sandbox Code Playgroud)
访问修饰符是不同的,但它将编译.
我在这里错过了什么吗?
partial-classes ×10
c# ×7
.net ×4
java ×2
asp.net-mvc ×1
constructor ×1
default ×1
properties ×1
sandcastle ×1
viewmodel ×1
xml-comments ×1