本文整理汇总了C#中CodeWriter.WriteAttribute方法的典型用法代码示例。如果您正苦于以下问题:C# CodeWriter.WriteAttribute方法的具体用法?C# CodeWriter.WriteAttribute怎么用?C# CodeWriter.WriteAttribute使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CodeWriter
的用法示例。
在下文中一共展示了CodeWriter.WriteAttribute方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: WriteClass
protected virtual void WriteClass(CodeWriter writer, Table table, Database schema, GenerationContext context)
{
writer.WriteLine();
string entityBase = context.Parameters.EntityBase;
if (string.IsNullOrEmpty(entityBase))
entityBase = schema.EntityBase;
var specifications = SpecificationDefinition.Partial;
if (table.Type.AccessModifierSpecified)
specifications |= GetSpecificationDefinition(table.Type.AccessModifier);
else
specifications |= SpecificationDefinition.Public;
if (table.Type.ModifierSpecified)
specifications |= GetSpecificationDefinition(table.Type.Modifier);
var tableAttribute = NewAttributeDefinition<TableAttribute>();
tableAttribute["Name"] = table.Name;
using (writer.WriteAttribute(tableAttribute))
using (writer.WriteClass(specifications,
table.Type.Name, entityBase, context.Parameters.EntityInterfaces))
{
WriteClassHeader(writer, table, context);
WriteCustomTypes(writer, table, schema, context);
WriteClassExtensibilityDeclarations(writer, table, context);
WriteClassProperties(writer, table, context);
if (context.Parameters.GenerateEqualsHash)
WriteClassEqualsAndHash(writer, table, context);
WriteClassChildren(writer, table, schema, context);
WriteClassParents(writer, table, schema, context);
WriteClassChildrenAttachment(writer, table, schema, context);
WriteClassCtor(writer, table, schema, context);
}
}
示例2: WriteDataContextProcedure
private void WriteDataContextProcedure(CodeWriter writer, Function procedure, GenerationContext context)
{
if (procedure == null || procedure.Name == null)
{
//Logger.Write(Level.Error, "CodeGenStoredProc: Error L33 Invalid storedProcedure object");
writer.WriteCommentLine("error L33 Invalid storedProcedure object");
return;
}
var functionAttribute = NewAttributeDefinition<FunctionAttribute>();
functionAttribute["Name"] = procedure.Name;
functionAttribute["IsComposable"] = procedure.IsComposable;
SpecificationDefinition specifications;
if (procedure.AccessModifierSpecified)
specifications = GetSpecificationDefinition(procedure.AccessModifier);
else
specifications = SpecificationDefinition.Public;
if (procedure.ModifierSpecified)
specifications |= GetSpecificationDefinition(procedure.Modifier);
using (writer.WriteAttribute(functionAttribute))
using (writer.WriteMethod(specifications, GetProcedureName(procedure),
GetProcedureType(procedure), GetProcedureParameters(procedure)))
{
string result = WriteProcedureBodyMethodCall(writer, procedure, context);
WriteProcedureBodyOutParameters(writer, procedure, result, context);
WriteProcedureBodyReturnValue(writer, procedure, result, context);
}
writer.WriteLine();
}
示例3: WriteClassParent
protected virtual void WriteClassParent(CodeWriter writer, Association parent, bool hasDuplicates, Database schema, GenerationContext context)
{
// the following is apparently useless
DbLinq.Schema.Dbml.Table targetTable = schema.Tables.FirstOrDefault(t => t.Type.Name == parent.Type);
if (targetTable == null)
{
//Logger.Write(Level.Error, "ERROR L191 target table type not found: " + parent.Type + " (processing " + parent.Name + ")");
return;
}
string member = parent.Member;
string storageField = parent.Storage;
// TODO: remove this
if (member == parent.ThisKey)
{
member = parent.ThisKey + targetTable.Type.Name; //repeat name to prevent collision (same as Linq)
storageField = "_x_" + parent.Member;
}
writer.WriteField(SpecificationDefinition.Private, storageField,
writer.GetGenericName(TypeExtensions.GetShortName(typeof(EntityRef<>)),
targetTable.Type.Name));
var storageAttribute = NewAttributeDefinition<AssociationAttribute>();
storageAttribute["Storage"] = storageField;
storageAttribute["OtherKey"] = parent.OtherKey;
storageAttribute["ThisKey"] = parent.ThisKey;
storageAttribute["Name"] = parent.Name;
storageAttribute["IsForeignKey"] = parent.IsForeignKey;
SpecificationDefinition specifications;
if (parent.AccessModifierSpecified)
specifications = GetSpecificationDefinition(parent.AccessModifier);
else
specifications = SpecificationDefinition.Public;
if (parent.ModifierSpecified)
specifications |= GetSpecificationDefinition(parent.Modifier);
var propertyName = hasDuplicates
? member + "_" + string.Join("", parent.TheseKeys.ToArray())
: member;
using (writer.WriteAttribute(storageAttribute))
using (writer.WriteAttribute(NewAttributeDefinition<DebuggerNonUserCodeAttribute>()))
using (writer.WriteProperty(specifications, propertyName, targetTable.Type.Name))
{
string storage = writer.GetMemberExpression(storageField, "Entity");
using (writer.WritePropertyGet())
{
writer.WriteLine(writer.GetReturnStatement(storage));
}
using (writer.WritePropertySet())
{
// algorithm is:
// 1.1. must be different than previous value
// 1.2. or HasLoadedOrAssignedValue is false (but why?)
// 2. implementations before change
// 3. if previous value not null
// 3.1. place parent in temp variable
// 3.2. set [Storage].Entity to null
// 3.3. remove it from parent list
// 4. assign value to [Storage].Entity
// 5. if value is not null
// 5.1. add it to parent list
// 5.2. set FK members with entity keys
// 6. else
// 6.1. set FK members to defaults (null or 0)
// 7. implementationas after change
//writer.WriteLine(writer.GetStatement(writer.GetAssignmentExpression(storage, writer.GetPropertySetValueExpression())));
var entityMember = writer.GetMemberExpression(parent.Storage, "Entity");
// 1.1
using (writer.WriteIf(writer.GetDifferentExpression(writer.GetPropertySetValueExpression(),
entityMember)))
{
var otherAssociation = schema.GetReverseAssociation(parent);
// 2. code before the change
// TODO change interface to require a member instead of a column
//foreach (IImplementation implementation in context.Implementations())
// implementation.WritePropertyBeforeSet(writer, ???, context);
// 3.
using (writer.WriteIf(writer.GetDifferentExpression(entityMember, writer.GetNullExpression())))
{
var previousEntityRefName = "previous" + parent.Type;
// 3.1.
writer.WriteLine(writer.GetStatement(
writer.GetVariableDeclarationInitialization(parent.Type, previousEntityRefName, entityMember)
));
// 3.2.
writer.WriteLine(writer.GetStatement(
writer.GetAssignmentExpression(entityMember, writer.GetNullExpression())
));
// 3.3.
writer.WriteLine(writer.GetStatement(
writer.GetMethodCallExpression(
writer.GetMemberExpression(writer.GetMemberExpression(previousEntityRefName, otherAssociation.Member), "Remove"),
writer.GetThisExpression())
));
}
// 4.
//.........这里部分代码省略.........
示例4: WriteClassChild
private void WriteClassChild(CodeWriter writer, Association child, bool hasDuplicates, Database schema, GenerationContext context)
{
// the following is apparently useless
DbLinq.Schema.Dbml.Table targetTable = schema.Tables.FirstOrDefault(t => t.Type.Name == child.Type);
if (targetTable == null)
{
//Logger.Write(Level.Error, "ERROR L143 target table class not found:" + child.Type);
return;
}
var storageAttribute = NewAttributeDefinition<AssociationAttribute>();
storageAttribute["Storage"] = child.Storage;
storageAttribute["OtherKey"] = child.OtherKey;
storageAttribute["ThisKey"] = child.ThisKey;
storageAttribute["Name"] = child.Name;
SpecificationDefinition specifications;
if (child.AccessModifierSpecified)
specifications = GetSpecificationDefinition(child.AccessModifier);
else
specifications = SpecificationDefinition.Public;
if (child.ModifierSpecified)
specifications |= GetSpecificationDefinition(child.Modifier);
var propertyName = hasDuplicates
? child.Member + "_" + string.Join("", child.OtherKeys.ToArray())
: child.Member;
var propertyType = writer.GetGenericName(TypeExtensions.GetShortName(typeof(EntitySet<>)), child.Type);
if (child.Storage != null)
writer.WriteField(SpecificationDefinition.Private, child.Storage, propertyType);
using (writer.WriteAttribute(storageAttribute))
using (writer.WriteAttribute(NewAttributeDefinition<DebuggerNonUserCodeAttribute>()))
using (writer.WriteProperty(specifications, propertyName,
writer.GetGenericName(TypeExtensions.GetShortName(typeof(EntitySet<>)), child.Type)))
{
// if we have a backing field, use it
if (child.Storage != null)
{
// the getter returns the field
using (writer.WritePropertyGet())
{
writer.WriteLine(writer.GetReturnStatement(
child.Storage
));
}
// the setter assigns the field
using (writer.WritePropertySet())
{
writer.WriteLine(writer.GetStatement(
writer.GetAssignmentExpression(
child.Storage,
writer.GetPropertySetValueExpression())
));
}
}
// otherwise, use automatic property
else
writer.WriteAutomaticPropertyGetSet();
}
writer.WriteLine();
}
示例5: WriteClassPropertyAccessors
/// <summary>
/// Writes property accessor
/// </summary>
/// <param name="writer"></param>
/// <param name="property"></param>
/// <param name="relatedAssociations"></param>
/// <param name="context"></param>
protected virtual void WriteClassPropertyAccessors(CodeWriter writer, Column property, IEnumerable<Association> relatedAssociations, GenerationContext context)
{
//generate [Column(...)] attribute
var column = NewAttributeDefinition<ColumnAttribute>();
column["Storage"] = property.Storage;
column["Name"] = property.Name;
column["DbType"] = property.DbType;
// be smart: we only write attributes when they differ from the default values
var columnAttribute = new ColumnAttribute();
if (property.IsPrimaryKey != columnAttribute.IsPrimaryKey)
column["IsPrimaryKey"] = property.IsPrimaryKey;
if (property.IsDbGenerated != columnAttribute.IsDbGenerated)
column["IsDbGenerated"] = property.IsDbGenerated;
if (property.AutoSync != DbLinq.Schema.Dbml.AutoSync.Default)
column["AutoSync"] = new EnumFullname("AutoSync", property.AutoSync);
if (property.CanBeNull != columnAttribute.CanBeNull)
column["CanBeNull"] = property.CanBeNull;
if (property.Expression != null)
column["Expression"] = property.Expression;
var specifications = property.AccessModifierSpecified
? GetSpecificationDefinition(property.AccessModifier)
: SpecificationDefinition.Public;
if (property.ModifierSpecified)
specifications |= GetSpecificationDefinition(property.Modifier);
//using (WriteAttributes(writer, context.Parameters.MemberExposedAttributes))
using (WriteAttributes(writer, GetAttributeNames(context, context.Parameters.MemberAttributes)))
using (writer.WriteAttribute(NewAttributeDefinition<DebuggerNonUserCodeAttribute>()))
using (writer.WriteAttribute(column))
using (writer.WriteProperty(specifications, property.Member, GetTypeOrExtendedType(writer, property)))
{
// on auto storage, we're just lazy
if (property.Storage == null)
writer.WriteAutomaticPropertyGetSet();
else
{
using (writer.WritePropertyGet())
{
writer.WriteLine(writer.GetReturnStatement(writer.GetVariableExpression(property.Storage)));
}
using (writer.WritePropertySet())
{
WriteClassPropertyAccessorSet(writer, property, relatedAssociations, context);
}
}
}
}