是否有可能创建2个具有相同方法名称的方法,传入值并使用条件属性返回并返回一些反条件
[Conditional("Debug")]
private string StringGenerator()
{
Guid g = Guid.NewGuid();
string guidString = Convert.ToBase64String(g.ToByteArray());
guidString = guidString.Replace("=", "");
guidString = guidString.Replace("+", "");
return guidString;
}
[!Conditional("Debug")]// I know using '!' doesn't really work
private string StringGenerator()
{
Guid g = Guid.NewGuid();
string guidString = Convert.ToBase64String(g.ToByteArray());
return guidString;
}
Run Code Online (Sandbox Code Playgroud)
这样你就可以调用一个方法,并根据是否定义了"Debug",编译器会选择哪种方法?
谢谢
我目前正在深入阅读C#(第3版),其中一个警告是使用带有task.wait的GUI线程是危险的,因为它可能导致死锁.但它不是ThreadPool或Console的问题.我的问题是为什么运行task.wait的线程没有死锁,所以对于下面的代码(取自书),即使控制台应用程序(后台)线程也不会使它成为陷阱,因为它会死锁.
public static void Main(string[] args = null)
{
var source = new CancellationTokenSource();
var task = TestInt(source.Token);
source.CancelAfter(4000);
Console.WriteLine("Status {0}",task.Status);
try
{
task.Wait();
}
catch (AggregateException e)
{
Console.WriteLine("Caught {0}",e.InnerExceptions[0]);
}
Console.WriteLine("Final Status: {0}",task.Status);
Console.ReadKey();
}
public static async Task TestInt(CancellationToken token, double start = 1)
{
await Task.Delay(TimeSpan.FromSeconds(30), token);
}
Run Code Online (Sandbox Code Playgroud)
谢谢
我公司的MVC解决方案使用IOC容器将Caching/Repository层注入控制器.这是非常昂贵的,因为目前我们每次创建控制器时都会生成新类(当缓存层对象已经引用了repo层时,可以达到数千个对象 - 并且所有这些类都被创建).我知道Singleton模式由于很多原因而非常不喜欢(参见为什么Singletons是邪恶的)但是有没有理由不将IOC Container设置为缓存/ repo层对象的单例?
谢谢.
您好我试图为任何注册我的网站的用户分配一个默认组.由于该组的管理员ID是管理员,因此我在数据库中查询管理员ID为我的管理员的组,然后将该组分配给用户.但是,抛出以下错误"无法将类型'System.Data.Objects.ObjectQuery`1 [DatabaseModel1.Group]'的对象强制转换为'DatabaseModel1.Group'."下面是代码
Dim defaultGroup = (From group As Group In context.Groups
Where group.AdminID = ((From users As User0 In context.User0
Where users.Name Like "Administrator"
Select users.UserID).First)
Select group)
currentUser.Groups.Add(defaultGroup)//the error is being thrown here
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激谢谢
我对反思有点新意,请原谅我,如果这是一个更基本的问题我正在用c#编写一个程序,并且我试图写一个通用的Empty或null checker方法到目前为止代码读取为
public static class EmptyNull
{
public static bool EmptyNullChecker(Object o)
{
try
{
var ob = (object[]) o;
if (ob == null || !ob.Any())
return true;
}
catch (Exception e)// i could use genercs to figure out if this a array but //figured i just catch the exception
{Console.WriteLine(e);}
try
{
if (o.GetType().GetGenericTypeDefinition().Equals("System.Collections.Generic.List`1[T]"))
//the following line is where the code goes haywire
var ob = (List<o.GetType().GetGenericArguments()[0].ReflectedType>)o;
if (ob == null || !ob.Any())
return true;
}
catch (Exception e) …Run Code Online (Sandbox Code Playgroud) 我正在构建一个C#应用程序,最终用户将没有任何sql数据库管理器.我需要一种存储大约300万个对象(大约10-20个字符串字段)的方法,以便程序可以导入信息.我已经尝试过二进制格式化但由于数据量很大而导致内存不足.有没有其他方法以快速和有效的方式存储对象?
谢谢