2014-10-08 108 views
0

目前正在使用的结构图用于注射的transactionId这是一个uniqie GUID,它需要每次StructureMap初始化问题

x.For<ITransaction>() 
.Use<Transaction>() 
.Ctor<string>("transactionId").Is(Guid.NewGuid().ToString()) 
.Ctor<string>("transactionType").Is(settings["TransactionTypeValue"]); 

随着控制器ITransaction被作为参数传递和获取TRANSACTIONID创建。 但是每当操作方法被调用时,我都没有得到唯一的Guid。 它每次加载应用程序和相同的值时都会设置。 如何在每次使用结构图配置调用操作方法时生成唯一的Guid。

回答

0

问题是,您只是将初始化容器时的值设置为相同。尝试设置是返回一个GUID的功能,如:

x.For<ITransaction>() 
.Use<Transaction>() 
.Ctor<string>("transactionId").Is(() => Guid.NewGuid().ToString()) 
.Ctor<string>("transactionType").Is(settings["TransactionTypeValue"]); 
+0

非常感谢..工作就像一个charm.Please你能告诉我这是什么功能是做。就是(()=> Guid.NewGuid () – Jammy123 2014-10-08 11:19:34

+0

@ Jammy123设置这些值时,该函数只执行一次(当你初始化你的容器时,通常在app启动时),所以GUID.NewGuid只会被调用一次,而不是直接传入一个值。是'.Is'的一个重载,它允许你传入一个返回一个正确类型的变量的函数,然后每次你得到一个x的实例时调用该函数 – Anduril 2014-10-08 11:24:05

+0

感谢Anduril解释这个.. – Jammy123 2014-10-08 11:28:32