1
在自定義CodeDomSerializer中,您可以向類中添加自定義成員(例如事件處理程序方法)。如何在.designer.cs文件中生成方法
生成的成員總是以Form1.cs而非Form1.designer.cs結尾。 有沒有辦法在設計器文件中的部分類中插入生成器方法?
(的方法的內容將被自動生成,並且不應被觸摸。)加入方法的
實施例:
public class MasterDetailControlSerializer : CodeDomSerializer
{
public override object Serialize(IDesignerSerializationManager manager, object value)
{
var baseClassSerializer = manager.GetSerializer(typeof(MasterDetailControl).BaseType, typeof(CodeDomSerializer)) as CodeDomSerializer;
var r = (CodeStatementCollection)baseClassSerializer.Serialize(manager, value);
var masterDetailControl = (MasterDetailControl)value;
var method = new CodeMemberMethod();
method.Name = masterDetailControl.Name + "_InitializeDetailComponent";
method.Parameters.AddRange(new[] { new CodeParameterDeclarationExpression(typeof(object), "sender"), new CodeParameterDeclarationExpression(typeof(InitializeDetailComponentEventArgs), "e") });
method.Attributes = MemberAttributes.Private;
var type = manager.GetService<CodeTypeDeclaration>();
type.Members.Add(method);
r.Add(new CodeAttachEventStatement(
new CodeEventReferenceExpression(base.GetExpression(manager, masterDetailControl), "InitializeDetailComponent"),
new CodeDelegateCreateExpression(
new CodeTypeReference(typeof(EventHandler<InitializeDetailComponentEventArgs>)),
new CodeThisReferenceExpression(),
method.Name
)));
return r;
}
}