本文整理汇总了C#中IPropertyBag.Set方法的典型用法代码示例。如果您正苦于以下问题:C# IPropertyBag.Set方法的具体用法?C# IPropertyBag.Set怎么用?C# IPropertyBag.Set使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IPropertyBag
的用法示例。
在下文中一共展示了IPropertyBag.Set方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DoBeforeCreate
/// <summary>
/// This method is called just before a node is created by the repository.
/// </summary>
/// <param name="context">The <see cref="IMansionContext"/>.</param>
/// <param name="properties">The new properties of the node.</param>
protected override void DoBeforeCreate(IMansionContext context, IPropertyBag properties)
{
base.DoBeforeCreate(context, properties);
// make sure the idenitifier is lowwercase
var identifier = properties.Get<string>(context, "identifier").Trim().ToLower();
properties.Set("identifier", identifier);
// make sure there is a name
var name = properties.Get(context, "name", identifier).Trim().ToLower();
properties.Set("name", name);
}
示例2: DoMap
/// <summary>
/// Maps the given <paramref name="dbRecord"/> to <paramref name="properties"/>.
/// </summary>
/// <param name="context">The <see cref="IMansionContext"/>.</param>
/// <param name="dbRecord">The <see cref="DbRecord"/> which to map.</param>
/// <param name="properties">The <see cref="IPropertyBag"/> in which to store the mapped result.</param>
protected override void DoMap(IMansionContext context, DbRecord dbRecord, IPropertyBag properties)
{
// field indices
var idIndex = dbRecord.GetOrdinal("id");
var parentPointerIndex = dbRecord.GetOrdinal("parentPointer");
var nameIndex = dbRecord.GetOrdinal("name");
var parentPathIndex = dbRecord.GetOrdinal("parentPath");
var typeIndex = dbRecord.GetOrdinal("type");
var parentStructureIndex = dbRecord.GetOrdinal("parentStructure");
// assemble the node pointer
var pointer = (dbRecord.IsDBNull(parentPointerIndex) ? string.Empty : dbRecord.GetString(parentPointerIndex) + NodePointer.PointerSeparator) + dbRecord.GetInt32(idIndex);
var structure = (dbRecord.IsDBNull(parentStructureIndex) ? string.Empty : dbRecord.GetString(parentStructureIndex) + NodePointer.StructureSeparator) + dbRecord.GetString(typeIndex);
var path = (dbRecord.IsDBNull(parentPathIndex) ? string.Empty : dbRecord.GetString(parentPathIndex) + NodePointer.PathSeparator) + dbRecord.GetString(nameIndex);
var nodePointer = NodePointer.Parse(pointer, structure, path);
// set the pointer
properties.Set("pointer", nodePointer);
properties.Set("path", nodePointer.PathString);
properties.Set("structure", nodePointer.StructureString);
properties.Set("depth", nodePointer.Depth);
properties.Set("name", nodePointer.Name);
properties.Set("type", nodePointer.Type);
if (nodePointer.HasParent)
{
properties.Set("parentPointer", nodePointer.Parent);
properties.Set("parentId", nodePointer.Parent.Id);
}
}
示例3: DoBeforeUpdate
/// <summary>
/// This method is called just before a node is updated by the repository.
/// </summary>
/// <param name="context">The <see cref="IMansionContext"/>.</param>
/// <param name="node">The node which will be modified.</param>
/// <param name="modifiedProperties">The updated properties of the node.</param>
protected override void DoBeforeUpdate(IMansionContext context, Node node, IPropertyBag modifiedProperties)
{
// if the name has not changed we are not interested
string newName;
if (!modifiedProperties.TryGet(context, "name", out newName))
return;
// if the name has not changed after normalization we are not interested
newName = TagUtilities.Normalize(newName);
if (node.Pointer.Name.Equals(newName))
{
modifiedProperties.Remove("name");
return;
}
modifiedProperties.Set("name", newName);
// if the tag is renamed to another already existing tag, move all content to that existing tag and delete this one
Node existingTag;
var tagIndexNode = TagUtilities.RetrieveTagIndexNode(context);
if (TagUtilities.TryRetrieveTagNode(context, tagIndexNode, newName, out existingTag))
{
// TODO: move all content to the existing tag
// TODO: delete this tag
}
}
示例4: Populate
/// <summary>
/// Populates the fullText property.
/// </summary>
/// <param name="context">The <see cref="IMansionContext"/>.</param>
/// <param name="modifiedProperties">The modified <see cref="IPropertyBag"/>.</param>
/// <param name="originalProperties">The original <see cref="IPropertyBag"/>.</param>
/// <exception cref="ArgumentNullException">Thrown if one of the parameters is null.</exception>
public void Populate(IMansionContext context, IPropertyBag modifiedProperties, IPropertyBag originalProperties)
{
//validate arguments
if (context == null)
throw new ArgumentNullException("context");
if (modifiedProperties == null)
throw new ArgumentNullException("modifiedProperties");
if (originalProperties == null)
throw new ArgumentNullException("originalProperties");
// get all the properties over which to loop
var properties = Properties.Get<string>(context, "properties").Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries).Select(property => property.Trim());
// assemble the content
var buffer = new StringBuilder();
foreach (var property in properties)
{
// get the content for the given property
String content;
if (!modifiedProperties.TryGet(context, property, out content))
{
if (!originalProperties.TryGet(context, property, out content))
continue;
}
// strip the HTML
content = content.StripHtml();
// add it to the buffer
buffer.AppendLine(content);
}
// if there is full-text content, add it to the full-text property, otherwise set it to null
modifiedProperties.Set("fullText", buffer.Length > 0 ? buffer.ToString() : null);
}
示例5: DoMap
/// <summary>
/// Maps the given <paramref name="dbRecord"/> to <paramref name="properties"/>.
/// </summary>
/// <param name="context">The <see cref="IMansionContext"/>.</param>
/// <param name="dbRecord">The <see cref="DbRecord"/> which to map.</param>
/// <param name="properties">The <see cref="IPropertyBag"/> in which to store the mapped result.</param>
protected override void DoMap(IMansionContext context, DbRecord dbRecord, IPropertyBag properties)
{
// field indices
var idIndex = dbRecord.GetOrdinal("id");
// set the pointer
properties.Set("id", dbRecord.GetInt32(idIndex));
}
示例6: DoBeforeUpdate
/// <summary>
/// This method is called just before a node is updated by the repository.
/// </summary>
/// <param name="context">The <see cref="IMansionContext"/>.</param>
/// <param name="record"> </param>
/// <param name="properties">The updated properties of the node.</param>
protected override void DoBeforeUpdate(IMansionContext context, Record record, IPropertyBag properties)
{
base.DoBeforeUpdate(context, record, properties);
// check if the identifier was updated
string identifier;
if (!properties.TryGet(context, "identifier", out identifier))
return;
identifier = identifier.Trim().ToLower();
properties.Set("identifier", identifier);
// only update the name with the identifier if the previous name was also derived from the identifier
if (record.Get(context, "name", string.Empty).Equals(record.Get(context, "identifier", string.Empty)))
{
var name = properties.Get(context, "name", identifier).Trim().ToLower();
properties.Set("name", name);
}
}
示例7: Prepare
/// <summary>
/// Prepares an insert query.
/// </summary>
/// <param name="context"></param>
/// <param name="connection">The connection.</param>
/// <param name="transaction">The transaction.</param>
/// <param name="parent"></param>
/// <param name="properties"></param>
/// <returns></returns>
public void Prepare(IMansionContext context, SqlConnection connection, SqlTransaction transaction, NodePointer parent, IPropertyBag properties)
{
// validate arguments
if (connection == null)
throw new ArgumentNullException("connection");
if (transaction == null)
throw new ArgumentNullException("transaction");
if (parent == null)
throw new ArgumentNullException("parent");
if (properties == null)
throw new ArgumentNullException("properties");
// get the values
var name = properties.Get<string>(context, "name", null);
if (string.IsNullOrWhiteSpace(name))
throw new InvalidOperationException("The node must have a name");
var typeName = properties.Get<string>(context, "type", null);
if (string.IsNullOrWhiteSpace(typeName))
throw new InvalidOperationException("The node must have a type");
// retrieve the type
var type = typeService.Load(context, typeName);
// get the schema of the root type
var schema = Resolver.Resolve(context, type);
// set the full text property
SqlServerUtilities.PopulateFullTextColumn(context, type, properties, properties);
// create the new pointer
name = NodePointer.MakeSafeName(name);
var newPointer = NodePointer.Parse(string.Join(NodePointer.PointerSeparator, new[] {parent.PointerString, 0.ToString(CultureInfo.InvariantCulture)}), string.Join(NodePointer.StructureSeparator, new[] {parent.StructureString, type.Name}), string.Join(NodePointer.PathSeparator, new[] {parent.PathString, name}));
properties.Set("_newPointer", newPointer);
// create the commands
command = connection.CreateCommand();
command.CommandType = CommandType.Text;
command.Transaction = transaction;
// prepare the query
var queryBuilder = new ModificationQueryBuilder(command);
// loop through all the tables in the schema and let them prepare for insert
foreach (var table in schema.Tables)
table.ToInsertStatement(context, queryBuilder, properties);
// finish the complete insert statement
queryBuilder.AppendQuery("SELECT @ScopeIdentity");
// set the command text
command.CommandText = queryBuilder.ToStatement();
}
示例8: DoMap
/// <summary>
/// Maps the given <paramref name="dbRecord"/> to <paramref name="properties"/>.
/// </summary>
/// <param name="context">The <see cref="IMansionContext"/>.</param>
/// <param name="dbRecord">The <see cref="DbRecord"/> which to map.</param>
/// <param name="properties">The <see cref="IPropertyBag"/> in which to store the mapped result.</param>
protected override void DoMap(IMansionContext context, DbRecord dbRecord, IPropertyBag properties)
{
// set all the column values as properties
foreach (var ordinals in dbRecord.GetUnreadOrdinals())
{
// if the column is empty remove the value from the properties, otherwise set the value from the column
if (dbRecord.IsDBNull(ordinals))
{
object obj;
properties.TryGetAndRemove(context, dbRecord.GetName(ordinals), out obj);
}
else
properties.Set(dbRecord.GetName(ordinals), dbRecord.GetValue(ordinals));
}
}
示例9: CreateNode
/// <summary>
/// Creates a new node in this repository.
/// </summary>
/// <param name="context">The <see cref="IMansionContext"/>.</param>
/// <param name="parent">The parent node.</param>
/// <param name="newProperties">The properties of the node which to create.</param>
/// <returns>Returns the created nodes.</returns>
public Node CreateNode(IMansionContext context, Node parent, IPropertyBag newProperties)
{
// validate arguments
if (context == null)
throw new ArgumentNullException("context");
if (parent == null)
throw new ArgumentNullException("parent");
if (newProperties == null)
throw new ArgumentNullException("newProperties");
CheckDisposed();
// if no allowedRoleGuids are specified, copy the parens
if (!newProperties.Contains("allowedRoleGuids"))
newProperties.Set("allowedRoleGuids", parent.Get(context, "allowedRoleGuids", string.Empty));
// invoke template method
return DoCreateNode(context, parent, newProperties);
}
示例10: RemoveTagName
/// <summary>
/// Removes a tag name from the <paramref name="properties"/>.
/// </summary>
/// <param name="context">The <see cref="IMansionContext"/>.</param>
/// <param name="properties">The properties containing the current tag names.</param>
/// <param name="tagName">The name of the tag which to remove.</param>
public static void RemoveTagName(IMansionContext context, IPropertyBag properties, string tagName)
{
// validate arguments
if (context == null)
throw new ArgumentNullException("context");
if (properties == null)
throw new ArgumentNullException("properties");
tagName = Normalize(tagName);
if (string.IsNullOrEmpty(tagName))
throw new ArgumentNullException("tagName");
// get the current tag names
var tagNames = properties.Get(context, "tags", string.Empty).Split(new[] {','}).Select(Normalize).Distinct().ToList();
// remove the tag
tagNames.Remove(tagName);
// set the new tag names
properties.Set("tags", string.Join(", ", tagNames));
}
示例11: Map
/// <summary>
/// Maps the given <paramref name="property"/> to <paramref name="target"/>.
/// </summary>
/// <param name="property">The <see cref="JProperty"/>.</param>
/// <param name="target">The <see cref="IPropertyBag"/>.</param>
public static void Map(JProperty property, IPropertyBag target)
{
// validate arguments
if (property == null)
throw new ArgumentNullException("property");
if (target == null)
throw new ArgumentNullException("target");
// check for null
if (property.Value == null)
return;
// get the correct type value
switch (property.Value.Type)
{
case JTokenType.Boolean:
{
target.Set(property.Name, property.Value.Value<bool>());
}
break;
case JTokenType.Date:
{
target.Set(property.Name, property.Value.Value<DateTime>());
}
break;
case JTokenType.Float:
{
target.Set(property.Name, property.Value.Value<float>());
}
break;
case JTokenType.Guid:
{
target.Set(property.Name, property.Value.Value<Guid>());
}
break;
case JTokenType.Integer:
{
target.Set(property.Name, property.Value.Value<int>());
}
break;
case JTokenType.Null:
{
// do not map
}
break;
case JTokenType.String:
{
target.Set(property.Name, property.Value.Value<string>());
}
break;
case JTokenType.TimeSpan:
{
target.Set(property.Name, property.Value.Value<TimeSpan>());
}
break;
case JTokenType.Uri:
{
target.Set(property.Name, property.Value.Value<Uri>());
}
break;
default:
throw new NotSupportedException(string.Format("Can not map property '{0}' of type '{1}' with value '{2}'", property.Name, property.Type, property.Value));
}
}
示例12: RouteToControllerAction
/// <summary>
/// Routes the request to the specified controller action, if the controller action is not specified the the request is routed to the 404 controller.
/// </summary>
/// <param name="context">The <see cref="MansionContext"/>.</param>
/// <param name="route">The <see cref="IPropertyBag"/> containing the route.</param>
/// <param name="areaName">The name of the area in which the controller lives.</param>
/// <param name="controllerName">The name of the controller.</param>
/// <param name="actionName">The name of the action which to invoke.</param>
private void RouteToControllerAction(IMansionContext context, IPropertyBag route, string areaName, string controllerName, string actionName)
{
// validate arguments
if (context == null)
throw new ArgumentNullException("context");
if (route == null)
throw new ArgumentNullException("route");
if (areaName == null)
throw new ArgumentNullException("areaName");
if (string.IsNullOrEmpty(controllerName))
throw new ArgumentNullException("controllerName");
if (string.IsNullOrEmpty(actionName))
throw new ArgumentNullException("actionName");
// set the route
route.Set("area", areaName);
route.Set("controller", controllerName);
route.Set("action", actionName);
// get the paths
var scriptResourcePath = applicationResourceService.ParsePath(context, new PropertyBag
{
{"path", areaName + "/" + controllerName + "Controller.xinclude"},
{"overridable", true}
});
var templateResourcePath = applicationResourceService.ParsePath(context, new PropertyBag
{
{"path", areaName + "/" + controllerName + "Controller.tpl"},
{"overridable", true}
});
// get the resources and check if controller does not exist
IEnumerable<IResource> scriptResources;
if (!applicationResourceService.TryGet(context, scriptResourcePath, out scriptResources))
{
// controller script not found
RouteTo404Controller(context, route, string.Empty, "404", "NotFound");
return;
}
IEnumerable<IResource> templateResources;
applicationResourceService.TryGet(context, templateResourcePath, out templateResources);
// open the resources
using (tagScriptService.Open(context, scriptResources))
using (templateService.Open(context, templateResources))
{
// check if action does not exist
IScript action;
if (!context.ProcedureStack.TryPeek<IScript>("Handle" + actionName, out action))
{
// check if the default action does not exists
if (!context.ProcedureStack.TryPeek<IScript>("HandleDefault", out action))
{
// action and default action not found
RouteTo404Controller(context, route, string.Empty, "404", "NotFound");
return;
}
}
// invoke the InitializeController event
using (context.Stack.Push("Arguments", new PropertyBag()))
{
foreach (var handler in context.EventHandlerStack.PeekAll("InitializeController"))
handler.Execute(context);
}
// invoke the action on the controller procedure
using (context.Stack.Push("Arguments", new PropertyBag()))
action.Execute(context);
}
}
示例13: ToGuids
/// <summary>
/// Manages the tags.
/// </summary>
/// <param name="context">The <see cref="IMansionContext"/>.</param>
/// <param name="properties">The new properties.</param>
public static void ToGuids(IMansionContext context, IPropertyBag properties)
{
// validate arguments
if (context == null)
throw new ArgumentNullException("context");
if (properties == null)
throw new ArgumentNullException("properties");
// get the tag name string
string tagNameString;
if (!properties.TryGet(context, "_tags", out tagNameString))
return;
// normalize the tag names
var tagNames = NormalizeNames(tagNameString).ToList();
// retrieve the tag index node
var tagIndexNode = RetrieveTagIndexNode(context);
// loop over all the tag names
var tagNodes = tagNames.Select(tagName => RetrieveTagNode(context, tagIndexNode, tagName));
// set the new tag guids
properties.Set("tagGuids", string.Join(",", tagNodes.Select(x => x.PermanentId)));
properties.Remove("_tags");
}
示例14: DoBeforeCreate
/// <summary>
/// This method is called just before a node is created by the repository.
/// </summary>
/// <param name="context">The <see cref="IMansionContext"/>.</param>
/// <param name="parent">The parent node to which the new child will be added.</param>
/// <param name="newProperties">The new properties of the node.</param>
protected override void DoBeforeCreate(IMansionContext context, Node parent, IPropertyBag newProperties)
{
// make sure the name is normalized
newProperties.Set("name", TagUtilities.Normalize(newProperties.Get(context, "name", string.Empty)));
}
示例15: DoMap
/// <summary>
/// Maps the properties from <paramref name="source"/> to <paramref name="target"/>.
/// </summary>
/// <param name="context">The <see cref="IMansionContext"/>.</param>
/// <param name="source">The <see cref="Hit"/>.</param>
/// <param name="property">The <see cref="JProperty"/>.</param>
/// <param name="target">The <see cref="IPropertyBag"/>.</param>
protected override void DoMap(IMansionContext context, Hit source, JProperty property, IPropertyBag target)
{
// null check
if (property.Value == null)
return;
// expect an array
var values = (JArray) property.Value;
target.Set(property.Name, string.Join(",", values.Select(value => value.Value<string>()).ToArray()));
}