本文整理汇总了C#中System.CodeDom.CodePropertySetValueReferenceExpression类的典型用法代码示例。如果您正苦于以下问题:C# CodePropertySetValueReferenceExpression类的具体用法?C# CodePropertySetValueReferenceExpression怎么用?C# CodePropertySetValueReferenceExpression使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
CodePropertySetValueReferenceExpression类属于System.CodeDom命名空间,在下文中一共展示了CodePropertySetValueReferenceExpression类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TypescriptPropertySetValueReferenceExpression
public TypescriptPropertySetValueReferenceExpression(
CodePropertySetValueReferenceExpression codeExpression,
CodeGeneratorOptions options)
{
_codeExpression = codeExpression;
_options = options;
System.Diagnostics.Debug.WriteLine("TypescriptPropertySetValueReferenceExpression Created");
}
示例2: CreateProperty
CodeMemberProperty CreateProperty(CodeTypeReference type, string propertyName, string fieldName, bool isValueType, bool raisePropertyChanged)
{
CodeMemberProperty property = new CodeMemberProperty();
property.Type = type;
property.Name = propertyName;
property.Attributes = MemberAttributes.Final;
if (GenerateInternalTypes)
property.Attributes |= MemberAttributes.Assembly;
else
property.Attributes |= MemberAttributes.Public;
CodeMethodReturnStatement propertyGet = new CodeMethodReturnStatement();
propertyGet.Expression = new CodeFieldReferenceExpression(ThisReference, fieldName);
property.GetStatements.Add(propertyGet);
CodeAssignStatement propertySet = new CodeAssignStatement();
propertySet.Left = new CodeFieldReferenceExpression(ThisReference, fieldName);
propertySet.Right = new CodePropertySetValueReferenceExpression();
if (raisePropertyChanged)
{
CodeConditionStatement ifStatement = new CodeConditionStatement();
CodeExpression left = new CodeFieldReferenceExpression(ThisReference, fieldName);
CodeExpression right = new CodePropertySetValueReferenceExpression();
if (!isValueType)
{
left = new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(Globals.TypeOfObject),
"ReferenceEquals", new CodeExpression[] { left, right });
}
else
{
left = new CodeMethodInvokeExpression(left, "Equals", new CodeExpression[] { right });
}
right = new CodePrimitiveExpression(true);
ifStatement.Condition = new CodeBinaryOperatorExpression(left, CodeBinaryOperatorType.IdentityInequality, right);
ifStatement.TrueStatements.Add(propertySet);
ifStatement.TrueStatements.Add(new CodeMethodInvokeExpression(ThisReference, RaisePropertyChangedEventMethod.Name, new CodePrimitiveExpression(propertyName)));
property.SetStatements.Add(ifStatement);
}
else
property.SetStatements.Add(propertySet);
return property;
}
示例3: GeneratePropertySetValueReferenceExpression
protected override void GeneratePropertySetValueReferenceExpression(CodePropertySetValueReferenceExpression e)
{
Output.Write("[CodePropertySetValueReferenceExpression: {0}]", e.ToString());
}
示例4: GenerateProperties
//.........这里部分代码省略.........
}
if (fi.References != null)
{
prop.GetStatements.Add(
new CodeMethodReturnStatement(
new CodeMethodInvokeExpression(
LoaderClass(fi.ReferencedClass),
"GetRef",
GetTransaction(),
new CodeCastExpression(
GetReturnType(actualNotNullRepresentation, fi),
getPrimaryKeyValue
))));
}
else
{
prop.GetStatements.Add(
new CodeMethodReturnStatement(
new CodeCastExpression(
prop.Type,
getPrimaryKeyValue
)));
}
if (!classInfo.ReadOnly && !fi.ReadOnly)
{
if (classInfo.GetPrimaryKeyFields().Length == 1)
{
prop.SetStatements.Add(
new CodeExpressionStatement(
new CodeMethodInvokeExpression(
new CodeThisReferenceExpression(), "SetPrimaryKeyValue",
new CodePropertySetValueReferenceExpression())));
}
else
{
CodeExpression plainValue = new CodePropertySetValueReferenceExpression();
if (fi.References != null)
plainValue = new CodeMethodInvokeExpression(plainValue, "GetPrimaryKeyValue");
prop.SetStatements.Add(
new CodeExpressionStatement(
new CodeMethodInvokeExpression(
new CodeThisReferenceExpression(), "SetPrimaryKeySubValue",
plainValue,
new CodePrimitiveExpression(primaryKeyComponentNumber),
new CodePrimitiveExpression(classInfo.GetPrimaryKeyFields().Length))));
}
}
primaryKeyComponentNumber++;
continue;
}
if (options.NullPropagation && (fi.References != null || fi.IsNullable) && actualNullableRepresentation != PrimitiveRepresentation.Raw)
{
CodeExpression retVal = new CodePrimitiveExpression(null);
if (fi.References == null && actualNullableRepresentation == PrimitiveRepresentation.SqlType)
{
retVal = new CodePropertyReferenceExpression(
new CodeTypeReferenceExpression(fi.GetNullableFieldHandler().GetSqlType()), "Null");
}
prop.GetStatements.Add(
new CodeConditionStatement(
new CodeBinaryOperatorExpression(
示例5: GeneratePropertySetValueReferenceExpression
protected override void GeneratePropertySetValueReferenceExpression(CodePropertySetValueReferenceExpression e)
{
base.Output.Write("value");
}
示例6: EmitNavigationProperty
/// <summary>
/// Generate a navigation property
/// </summary>
/// <param name="target">the other end</param>
/// <param name="referenceProperty">True to emit Reference navigation property</param>
/// <returns>the generated property</returns>
private CodeMemberProperty EmitNavigationProperty(RelationshipEndMember target)
{
CodeTypeReference typeRef = GetReturnType(target);
// raise the PropertyGenerated event
PropertyGeneratedEventArgs eventArgs = new PropertyGeneratedEventArgs(Item,
null, // no backing field
typeRef);
this.Generator.RaisePropertyGeneratedEvent(eventArgs);
// [System.ComponentModel.Browsable(false)]
// public TargetType TargetName
// public EntityReference<TargetType> TargetName
// or
// public EntityCollection<targetType> TargetNames
CodeMemberProperty property = new CodeMemberProperty();
// Only reference navigation properties are currently currently supported with XML serialization
// and thus we should use the XmlIgnore and SoapIgnore attributes on other property types.
AttributeEmitter.AddIgnoreAttributes(property);
AttributeEmitter.AddBrowsableAttribute(property);
AttributeEmitter.AddGeneratedCodeAttribute(property);
CommentEmitter.EmitSummaryComments(Item, property.Comments);
property.Name = Item.Name;
if (eventArgs.ReturnType != null && !eventArgs.ReturnType.Equals(typeRef))
{
property.Type = eventArgs.ReturnType;
}
else
{
property.Type = typeRef;
}
property.Attributes = MemberAttributes.Final;
CodeExpression getMethod = EmitGetMethod(target);
CodeExpression getReturnExpression;
if (target.RelationshipMultiplicity != RelationshipMultiplicity.Many)
{
property.Attributes |= AccessibilityFromGettersAndSetters(Item);
// insert user-supplied Set code here, before the assignment
//
List<CodeStatement> additionalSetStatements = eventArgs.AdditionalSetStatements;
if (additionalSetStatements != null && additionalSetStatements.Count > 0)
{
try
{
property.SetStatements.AddRange(additionalSetStatements.ToArray());
}
catch (ArgumentNullException e)
{
Generator.AddError(Strings.InvalidSetStatementSuppliedForProperty(Item.Name),
ModelBuilderErrorCode.InvalidSetStatementSuppliedForProperty,
EdmSchemaErrorSeverity.Error,
e);
}
}
CodeExpression valueRef = new CodePropertySetValueReferenceExpression();
if (typeRef != eventArgs.ReturnType)
{
// we need to cast to the actual type
valueRef = new CodeCastExpression(typeRef, valueRef);
}
CodeExpression valueProperty = getMethod;
// get
// return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<TTargetEntity>("CSpaceQualifiedRelationshipName", "TargetRoleName").Value;
getReturnExpression = valueProperty;
// set
// ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<TTargetEntity>("CSpaceQualifiedRelationshipName", "TargetRoleName").Value = value;
property.SetStatements.Add(
new CodeAssignStatement(valueProperty, valueRef));
// setup the accessibility of the navigation property setter and getter
MemberAttributes propertyAccessibility = property.Attributes & MemberAttributes.AccessMask;
PropertyEmitter.AddGetterSetterFixUp(Generator.FixUps, GetFullyQualifiedPropertyName(property.Name),
PropertyEmitter.GetGetterAccessibility(Item), propertyAccessibility, true);
PropertyEmitter.AddGetterSetterFixUp(Generator.FixUps, GetFullyQualifiedPropertyName(property.Name),
PropertyEmitter.GetSetterAccessibility(Item), propertyAccessibility, false);
List<CodeStatement> additionalAfterSetStatements = eventArgs.AdditionalAfterSetStatements;
if (additionalAfterSetStatements != null && additionalAfterSetStatements.Count > 0)
{
//.........这里部分代码省略.........
示例7: Visit
public void Visit (CodePropertySetValueReferenceExpression o)
{
g.GeneratePropertySetValueReferenceExpression (o);
}
示例8: GeneratePropertySetValueReferenceExpression
private void GeneratePropertySetValueReferenceExpression(CodePropertySetValueReferenceExpression e) {
Output.Write("value");
}
示例9: GenerateSetInstanceVariableStatement
/// <summary>
/// Generates the "SetInstanceVariable" statement.
/// </summary>
/// <returns>The "SetInstanceVariable" statement.</returns>
/// <param name="thisRef">This reference.</param>
/// <param name="typeRef">Type reference.</param>
/// <param name="nameRef">Name reference.</param>
/// <param name="valueRef">Value reference</param>
protected override CodeExpression GenerateSetInstanceVariableStatement(CodeThisReferenceExpression thisRef, CodeTypeReference typeRef, CodePrimitiveExpression nameRef, CodePropertySetValueReferenceExpression valueRef)
{
throw new NotImplementedException();
}
示例10: CreateConstantSetters
private void CreateConstantSetters(IShaderDom shader, Action<CodeTypeMember, string> add, string name, CodeExpression assignmentField, CodeExpression assignmentArrayField)
{
/*
* Something like:
public void SetInvTargetSize(ref Microsoft.Xna.Framework.Vector2 value)
{
this.vreg.SetVector2(130, ref value);
}
public Microsoft.Xna.Framework.Vector2 InvTargetSize
{
set
{
this.SetInvTargetSize(ref value);
}
}*/
Register reg;
Type dataType;
bool hasSetMethod;
int stride;
if (!ExtractRegType(name, out reg, out dataType, out hasSetMethod, out stride))
return;
Type arrayOrSingleType = dataType;
//right...
//create the method of the given type.
//public void SetInvTargetSize(ref Microsoft.Xna.Framework.Vector2 value)
CodeStatementCollection methodStatements = new CodeStatementCollection();
CodeParameterDeclarationExpression param = new CodeParameterDeclarationExpression(dataType, "value");
List<CodeParameterDeclarationExpression> additionalParams = new List<CodeParameterDeclarationExpression>();
if (reg.ArraySize == -1)
param.Direction = FieldDirection.Ref;
else
{
arrayOrSingleType = dataType.MakeArrayType();
param.Type = new CodeTypeReference(arrayOrSingleType);
//add array params, readIndex, writeIndex, count
additionalParams.Add(new CodeParameterDeclarationExpression(typeof(uint), "readIndex"));
additionalParams.Add(new CodeParameterDeclarationExpression(typeof(uint), "writeIndex"));
additionalParams.Add(new CodeParameterDeclarationExpression(typeof(uint), "count"));
}
CodeExpression valueRef = new CodeArgumentReferenceExpression(param.Name);
//when there isn't a set method, there is just a set property
if (!hasSetMethod)
valueRef = new CodePropertySetValueReferenceExpression();
//create the guts
//depends on what constants use it...
//eg:
//this.vreg.SetVector2(130, ref value);
Register sreg;
if (dataType == typeof(bool))
{
//special case for booleans, assign the array directly.
//looks like:
//
// if (preg_bool[index] != value)
// {
// preg_bool[index] = value;
// preg_bool_changed = true;
// }
foreach (KeyValuePair<AsmListing, CodeExpression> listing in listingRegisters)
{
RegisterSet registers = listing.Key.RegisterSet;
CodeExpression registersRef = listing.Value;
if (registers.TryGetRegister(name, out sreg))
{
if (listing.Key == asm.PixelShader)
{
CodeExpression arrayIndex = new CodeArrayIndexerExpression(shader.PixelShaderBooleanRegistersRef, new CodePrimitiveExpression(sreg.Index));
CodeStatement assign = new CodeAssignStatement(arrayIndex, new CodePropertySetValueReferenceExpression());
CodeStatement change = new CodeAssignStatement(shader.PixelShaderBooleanRegistersChangedRef, new CodePrimitiveExpression(true));
CodeStatement condition = new CodeConditionStatement(
new CodeBinaryOperatorExpression(arrayIndex, CodeBinaryOperatorType.IdentityInequality, new CodePropertySetValueReferenceExpression()),
new CodeStatement[]{assign, change});
methodStatements.Add(condition);
}
if (listing.Key == asm.VertexShader)
{
CodeExpression arrayIndex = new CodeArrayIndexerExpression(shader.VertexShaderBooleanRegistersRef, new CodePrimitiveExpression(sreg.Index));
//.........这里部分代码省略.........
示例11: EmitBasicClassMembers
//.........这里部分代码省略.........
"ReferenceEquals");
CodeFieldReferenceExpression internalSyncObjectFieldReference = new CodeFieldReferenceExpression(null, InternalSyncObjectFieldName);
CodeMethodInvokeExpression referenceEqualInvokeExpression = new CodeMethodInvokeExpression(referenceEqualsMethodReference,
new CodeExpression[] { internalSyncObjectFieldReference, new CodePrimitiveExpression(null) });
CodeObjectCreateExpression objectCreateExpression = new CodeObjectCreateExpression(objectTypeReference, new CodeExpression[] {});
CodeMethodReferenceExpression compareExchangeMethodReference = new CodeMethodReferenceExpression(new CodeTypeReferenceExpression(interlockedCodeTypeReference),
"CompareExchange");
CodeMethodInvokeExpression compareExchangeMethodInvokeExpression = new CodeMethodInvokeExpression(compareExchangeMethodReference,
new CodeDirectionExpression(FieldDirection.Ref, internalSyncObjectFieldReference), objectCreateExpression,
new CodePrimitiveExpression(null));
internalSyncObjectProperty.GetStatements.Add(new CodeConditionStatement(referenceEqualInvokeExpression,
new CodeExpressionStatement(compareExchangeMethodInvokeExpression)));
internalSyncObjectProperty.GetStatements.Add(new CodeMethodReturnStatement(internalSyncObjectFieldReference));
AddComments(internalSyncObjectProperty, InternalSyncObjectPropertyComment);
// Generation of the ResourceManager property
CodeMemberProperty resourceManagerProperty = new CodeMemberProperty();
resourceClass.Members.Add(resourceManagerProperty);
resourceManagerProperty.Name = ResMgrPropertyName;
resourceManagerProperty.HasGet = true;
resourceManagerProperty.HasSet = false;
resourceManagerProperty.Type = resourceManagerTypeReference;
/*if (internalClass)
resourceManagerProperty.Attributes = MemberAttributes.Assembly;
else*///Ð
resourceManagerProperty.Attributes = MemberAttributes.Public;
if (useStatic)
resourceManagerProperty.Attributes |= MemberAttributes.Static;
CodeTypeReference eitorBrowsableTypeReference = new CodeTypeReference(typeof(EditorBrowsableState));
eitorBrowsableTypeReference.Options = CodeTypeReferenceOptions.GlobalReference;
CodeAttributeArgument codeAttributeArgument = new CodeAttributeArgument(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(eitorBrowsableTypeReference), "Advanced"));
CodeAttributeDeclaration codeAttributeDeclaration = new CodeAttributeDeclaration("System.ComponentModel.EditorBrowsableAttribute", new CodeAttributeArgument[] { codeAttributeArgument });
codeAttributeDeclaration.AttributeType.Options = CodeTypeReferenceOptions.GlobalReference;
resourceManagerProperty.CustomAttributes.Add(codeAttributeDeclaration);
CodeFieldReferenceExpression resourceManagerFieldReference = new CodeFieldReferenceExpression(null, ResMgrFieldName);
CodeMethodInvokeExpression referenceEqualsMethodInvokeExpression = new CodeMethodInvokeExpression(referenceEqualsMethodReference,
resourceManagerFieldReference, new CodePrimitiveExpression(null));
CodeTypeReference monitorCodeTypeReference = new CodeTypeReference(typeof(Monitor), CodeTypeReferenceOptions.GlobalReference);
CodeMethodReferenceExpression monitorEnterMethodReference = new CodeMethodReferenceExpression(new CodeTypeReferenceExpression(monitorCodeTypeReference),
"Enter");
CodePropertyReferenceExpression internalSyncObjectPropertyReference = new CodePropertyReferenceExpression(null, InternalSyncObjectPropertyName);
CodeMethodInvokeExpression monitorEnterMethodInvokeExpression = new CodeMethodInvokeExpression(monitorEnterMethodReference,
internalSyncObjectPropertyReference);
CodePropertyReferenceExpression assemblyPropertyReference = new CodePropertyReferenceExpression(new CodeTypeOfExpression(new CodeTypeReference(resourceClass.Name)),
"Assembly");
CodeObjectCreateExpression resourceManagerCreateExpression = new CodeObjectCreateExpression(resourceManagerTypeReference,
new CodePrimitiveExpression(logicalName), assemblyPropertyReference); //logicalName changed by Ðonny
CodeMethodReferenceExpression interlockedExchangeMethodReference = new CodeMethodReferenceExpression(new CodeTypeReferenceExpression(interlockedCodeTypeReference),
"Exchange");
CodeMethodInvokeExpression interlockedExchangeMethodInvokeExpression = new CodeMethodInvokeExpression(interlockedExchangeMethodReference,
new CodeDirectionExpression(FieldDirection.Ref, resourceManagerFieldReference), resourceManagerCreateExpression);
CodeMethodReferenceExpression monitorExitMethodReference = new CodeMethodReferenceExpression(new CodeTypeReferenceExpression(monitorCodeTypeReference),
"Exit");
CodeMethodInvokeExpression monitorExitMethodInvokeExpression = new CodeMethodInvokeExpression(monitorExitMethodReference,
internalSyncObjectPropertyReference);
CodeTryCatchFinallyStatement tryFinallyStatement = new CodeTryCatchFinallyStatement();
tryFinallyStatement.TryStatements.Add(new CodeConditionStatement(referenceEqualsMethodInvokeExpression,
new CodeExpressionStatement(interlockedExchangeMethodInvokeExpression)));
tryFinallyStatement.FinallyStatements.Add(monitorExitMethodInvokeExpression);
resourceManagerProperty.GetStatements.Add(new CodeConditionStatement(referenceEqualsMethodInvokeExpression,
new CodeExpressionStatement(monitorEnterMethodInvokeExpression), tryFinallyStatement));
resourceManagerProperty.GetStatements.Add(new CodeMethodReturnStatement(resourceManagerFieldReference));
AddComments(resourceManagerProperty, ResMgrPropertyComment);
// Generation of the Culture property
CodeMemberProperty cultureProperty = new CodeMemberProperty();
resourceClass.Members.Add(cultureProperty);
cultureProperty.Name = CultureInfoPropertyName;
cultureProperty.HasGet = true;
cultureProperty.HasSet = true;
cultureProperty.Type = cultureInfoTypeReference;
/*if (internalClass)
cultureProperty.Attributes = MemberAttributes.Assembly;
else*///Ð
cultureProperty.Attributes = MemberAttributes.Public;
if (useStatic)
cultureProperty.Attributes |= MemberAttributes.Static;
cultureProperty.CustomAttributes.Add(codeAttributeDeclaration);
CodeFieldReferenceExpression resourceCultureFieldReference = new CodeFieldReferenceExpression(null, CultureInfoFieldName);
cultureProperty.GetStatements.Add(new CodeMethodReturnStatement(resourceCultureFieldReference));
CodePropertySetValueReferenceExpression codePropertySetValueReferenceExpression = new CodePropertySetValueReferenceExpression();
cultureProperty.SetStatements.Add(new CodeAssignStatement(resourceCultureFieldReference, codePropertySetValueReferenceExpression));
AddComments(cultureProperty, CulturePropertyComment1, CulturePropertyComment2);
}
示例12: Generate
public void Generate(CodePropertySetValueReferenceExpression expression)
{
Write("value");
}
示例13: Write
private void Write(CodePropertySetValueReferenceExpression e){
this.writer.Write("value");
}
示例14: CreateDocTypes
private void CreateDocTypes(IEnumerable<DocType> docTypes, CodeNamespace ns)
{
foreach (var docType in docTypes)
{
string genName = docType.TypeName;
CodeCompileUnit currUnit = new CodeCompileUnit();
currUnit.Namespaces.Add(ns);
//create class
CodeTypeDeclaration currClass = new CodeTypeDeclaration(genName);
//create the custom attribute
CodeAttributeDeclarationCollection classAttributes = new CodeAttributeDeclarationCollection(
new CodeAttributeDeclaration[] {
new CodeAttributeDeclaration("UmbracoInfo",
new CodeAttributeArgument(new CodePrimitiveExpression(docType.Alias))
),
new CodeAttributeDeclaration("DocType")
});
if (!Args.IsInterface)
{
classAttributes.Add(new CodeAttributeDeclaration(new CodeTypeReference(typeof(DataContractAttribute))));
}
//add the address to the class
currClass.CustomAttributes.AddRange(classAttributes);
currClass.IsClass = true;
//add the summary decoration
currClass.Comments.AddRange(GenerateSummary(docType.Description));
//set up the type
currClass.TypeAttributes = TypeAttributes.Public;
if (docType.ParentId > 0)
{
string typeName = docTypes.Single(d => d.Id == docType.ParentId).TypeName;
if (!Args.IsInterface)
{
currClass.BaseTypes.Add(new CodeTypeReference(typeName)); //docType inheritance
}
else
{
currClass.BaseTypes.Add(new CodeTypeReference("I" + typeName)); //docType inheritance of interface type
}
}
else
{
if (!Args.IsInterface)
{
currClass.BaseTypes.Add(new CodeTypeReference("DocTypeBase")); //base class
}
else
{
currClass.BaseTypes.Add(new CodeTypeReference("IDocTypeBase")); //base interface
}
}
if (!Args.IsInterface)
{
currClass.IsPartial = true;
}
else
{
currClass.IsInterface = true;
currClass.Name = "I" + currClass.Name;
}
currClass.Members.AddRange(GenerateConstructors());
#region Doc Type Properties
foreach (var docTypeProperty in docType.Properties)
{
CodeMemberField valueField = new CodeMemberField();
valueField.Attributes = MemberAttributes.Private;
valueField.Name = "_" + docTypeProperty.TypeName;
valueField.Type = new CodeTypeReference(docTypeProperty.DatabaseType);
currClass.Members.Add(valueField);
//store the umbraco data in an attribute.
CodeMemberProperty p = new CodeMemberProperty();
p.CustomAttributes.AddRange(GenerateDocTypePropertyAttributes(docTypeProperty));
p.Name = docTypeProperty.TypeName;
p.Type = new CodeTypeReference(docTypeProperty.DatabaseType);
p.Attributes = MemberAttributes.Public;
p.HasGet = true;
p.HasSet = false;
p.GetStatements.Add(new CodeMethodReturnStatement(
new CodeFieldReferenceExpression(
new CodeThisReferenceExpression(), valueField.Name))
);
#region Set statement
//have a conditional statment so we can use the INotifyChanging and INotifyChanged events
CodeExpression left = new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), valueField.Name);
CodeExpression right = new CodePropertySetValueReferenceExpression();
CodeExpression cond = GenerateInequalityConditionalStatement(left, right);
//.........这里部分代码省略.........
示例15: CreateProperty
private CodeMemberProperty CreateProperty(CodeTypeReference type, string propertyName, string fieldName, bool isValueType)
{
CodeMemberProperty property = new CodeMemberProperty {
Type = type,
Name = propertyName,
Attributes = MemberAttributes.Final
};
if (this.GenerateInternalTypes)
{
property.Attributes |= MemberAttributes.Assembly;
}
else
{
property.Attributes |= MemberAttributes.Public;
}
CodeMethodReturnStatement statement = new CodeMethodReturnStatement {
Expression = new CodeFieldReferenceExpression(this.ThisReference, fieldName)
};
property.GetStatements.Add(statement);
CodeAssignStatement statement2 = new CodeAssignStatement {
Left = new CodeFieldReferenceExpression(this.ThisReference, fieldName),
Right = new CodePropertySetValueReferenceExpression()
};
if (this.EnableDataBinding && this.SupportsDeclareEvents)
{
CodeConditionStatement statement3 = new CodeConditionStatement();
CodeExpression targetObject = new CodeFieldReferenceExpression(this.ThisReference, fieldName);
CodeExpression right = new CodePropertySetValueReferenceExpression();
if (!isValueType)
{
targetObject = new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(Globals.TypeOfObject), "ReferenceEquals", new CodeExpression[] { targetObject, right });
}
else
{
targetObject = new CodeMethodInvokeExpression(targetObject, "Equals", new CodeExpression[] { right });
}
right = new CodePrimitiveExpression(true);
statement3.Condition = new CodeBinaryOperatorExpression(targetObject, CodeBinaryOperatorType.IdentityInequality, right);
statement3.TrueStatements.Add(statement2);
statement3.TrueStatements.Add(new CodeMethodInvokeExpression(this.ThisReference, this.RaisePropertyChangedEventMethod.Name, new CodeExpression[] { new CodePrimitiveExpression(propertyName) }));
property.SetStatements.Add(statement3);
return property;
}
property.SetStatements.Add(statement2);
return property;
}