可能重复:
变量名前的@符号在C#中是什么意思?重复:
有时我会看到一些C#代码,其中一个方法参数以@为前缀,如下所示:
public static void SomeStaticMethod( SomeType @parameterName ) { }
Run Code Online (Sandbox Code Playgroud)
这是什么意思 ?它有一些重要的特殊含义吗?
我在NHibernate中创建一个EventListener,当我让VS.NET生成接口方法时,它生成如下的OnPostLoad方法:
public class PostLoadEventListener : IPostLoadEventListener
{
public void OnPostLoad( PostLoadEvent @event )
{
}
}
Run Code Online (Sandbox Code Playgroud)
为什么是这样 ?
我正在使用VS2008,并希望根据属性上的自定义属性创建编译时警告/错误(如果可能).
目前有两个案例让我感兴趣:
[MyAttribute (typeof(MyClass)]
Run Code Online (Sandbox Code Playgroud)
MyClass必须实现一个接口.目前我在属性的构造函数中声明了这一点,但由于堆栈跟踪的性质,这不容易跟踪:
public MyAttribute (Type MyClassType)
{
System.Diagnostics.Debug.Assert(typeof(MyInterface).IsAssignableFrom(MyClassType),
"Editor must implement interface: " + typeof(MyInterface).Name);
}
Run Code Online (Sandbox Code Playgroud)
我感兴趣的第二种情况是我在属性中定义了一个类型,如果该类型实现了一个接口,那么如果另一个属性不存在则应该显示警告.
IE if(MyClass.Implements(SomeInterface)&&!Exists(SomeAttibute)){Generate Warning}
[MyAttribute(typeof(MyClass)]
// Comment next line to generate warning
[Foo ("Bar")]
Run Code Online (Sandbox Code Playgroud)
谢谢!
在NHibernate中,我想检索一个实例,并在表示数据库中检索到的实体的记录上放置一个独占锁.
现在,我有这个代码:
With.Transaction (session, IsolationLevel.Serializable, delegate
{
ICriteria crit = session.CreateCriteria (typeof (TarificationProfile));
crit.SetLockMode (LockMode.Upgrade);
crit.Add (Expression.Eq ("Id", tarificationProfileId));
TarificationProfile profile = crit.UniqueResult<TarificationProfile> ();
nextNumber = profile.AttestCounter;
profile.AttestCounter++;
session.SaveOrUpdate (profile);
});
Run Code Online (Sandbox Code Playgroud)
如您所见,我将此Criteria的LockMode设置为"Upgrade".这会为SQL Server发出一个SQL语句,它使用updlock和rowlock锁定提示:
SELECT ... FROM MyTable with (updlock, rowlock)
Run Code Online (Sandbox Code Playgroud)
但是,我希望能够使用真正的独占锁.也就是说,防止其他人可以读取这个相同的记录,直到我释放锁定.换句话说,我希望能够使用xlock锁定提示,而不是updlock.
我不知道(甚至是否)我能做到这一点......也许有人可以给我一些关于这个的提示:)
如果确实有必要,我可以使用NHibernate的SQLQuery功能,并编写自己的SQL查询,但是,我想尽可能避免这种情况.
有没有办法从应用程序本身运行迁移?
谢谢!
在以前版本的VS.NET或.NET框架中,默认情况下您会收到英语异常消息.如果您安装了"语言包",则会收到该语言包语言的异常消息.
现在,我正在使用荷兰语Windows Vista上的英语VS.NET 2008(没有安装语言包).
当我正在开发,并且我编写了一些触发异常的代码时,我收到的异常消息是荷兰语(我的操作系统的语言).我不希望它在荷兰; 我希望它是英文的.(原因很明显:谷歌更容易,而那些翻译过的错误信息都是废话).
在VS.NET中,我的国际设置设置为"英语",在Windows Vista中,我的区域设置设置为"荷兰语/比利时".如何在不更改Windows中的区域设置的情况下获取英语异常消息?
我该如何映射:
public class Customer
{
private IList<Order> _orders;
public IEnumerable<Order>
GetAllOrders()
{
return _orders;
}
}
Run Code Online (Sandbox Code Playgroud)
在项目页面上有一些样本,但没有关于这种情况.有这个样本:
// model
public class Account
{
private IList<Customer> customers = new List<Customer>();
public IList<Customer> Customers
{
get { return customers; }
}
}
// mapping
HasMany(x => x.Customers)
.Access.AsCamelCaseField();
Run Code Online (Sandbox Code Playgroud)
但它假设Account有公共领域的客户,那个场景与我的不同.我尝试了一些可能的选项但没有效果:
HasMany(x => Reveal.Propertie("_orders"))
Run Code Online (Sandbox Code Playgroud)
私有字段在简单属性映射中工作正常但集合映射完全不同.任何的想法?谢谢
使用XML序列化序列化类时,如何有条件地输出某些属性.即在某些情况下,它输出此属性,在其他情况下,它不输出.
我正在sharepoint上部署一个webpart并遇到一些错误.webpart使用来自Web服务的数据并使用Microsoft Chart(Framework 3.5)显示图表.当我尝试访问它时,我得到以下错误:
无法加载文件或程序集'System.ServiceModel,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'或其依赖项之一.该系统找不到指定的文件.
StackTrace:在System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage消息,WebResponse响应,Stream responseStream,Boolean asyncCall)
处于System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName,Object []参数)
我尝试将System.Servicemodel.dll复制到bin文件夹并在GAC上注册,但错误不会更改.任何的想法?
谢谢
我想向COM公开.NET类.这很容易:
ComVisibleGuid接口分配了一个没什么大不了.这一切都有效.但是,现在我的问题是:我在该类中有一些事件,我也希望向COM公开.
这应该没什么大不了的,但是,当我看一些例子(由MS'ComInterop工具生成的fi代码)时,我看到事件是在一个单独的接口中声明的.那就是:应该是的类ComVisible,实现2个接口:
ComVisibleComVisible.现在,我的问题是:为什么?这是什么原因?
为什么ComVisible在另一个接口中定义了事件,为什么它们只是在包含应该是的方法和属性的接口中没有定义ComVisible?
这背后的原因是什么?
已经阅读了MSDN命名指南并且找不到明确的答案,除此之外,您应该尽量避免使用下划线.假设我有以下内容:
public class Employee
{
private string m_name; //to store property value called Name
public string Name
{
get { return m_name; }
set { m_name = value; }
}
public void ConvertNameToUpper()
{
//by convention should you use this
return m_name.ToUpper();
//or this
return Name.ToUpper();
}
}
Run Code Online (Sandbox Code Playgroud)
上面m_name的正确命名约定是什么?例如,在代码我继承我常见:
哪一个(或另一个)最常被接受?
作为后续,在类的方法中,您是指内部(私有)标识符还是公共属性访问器?
c# ×6
.net ×3
.net-3.5 ×2
.net-2.0 ×1
class-design ×1
com ×1
comvisible ×1
exception ×1
locking ×1
migrator.net ×1
nhibernate ×1
postsharp ×1
sharepoint ×1