标签: c#-2.0

最佳实践:如何公开只读ICollection

我在课堂上ICollection<T>打电话foos,我想以只读方式公开(见这个问题).我看到界面定义了一个属性.IsReadOnly,这似乎是合适的......我的问题是:我如何让对于foos只读类的消费者明白?

.IsReadOnly在尝试未实现的方法之前,我不想依赖它们记住查询.Add().理想情况下,我想揭露foosReadOnlyCollection<T>,但它没有实现IList<T>.我应该foo通过一个名为,例如,GetReadOnlyFooCollection而不是通过属性公开的方法公开?如果是这样,这不会混淆那些期望的人ReadOnlyCollection<T>吗?

这是C#2.0,所以扩展方法ToList()不可用......

c# collections c#-2.0

10
推荐指数
2
解决办法
7165
查看次数

Nullable Enum可以为空的类型问题

我使用以下源代码获得以下编译错误:

编译错误:

无法确定条件表达式的类型,因为''和'MyEnum'之间没有隐式转换

源代码

public enum MyEnum
{
    Value1, Value2, Value3
}

public class MyClass
{
    public MyClass() {}
    public MyEnum? MyClassEnum { get; set; }
}

public class Main()
{
   object x = new object();

   MyClass mc = new MyClass()
   {
        MyClassEnum = Convert.IsDBNull(x) : null ? 
            (MyEnum) Enum.Parse(typeof(MyEnum), x.ToString(), true)
   };
}
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个错误?

.net nullable c#-2.0

10
推荐指数
2
解决办法
2万
查看次数

如何防止打印屏幕

我要求我正在处理的应用程序阻止用户轻松捕获屏幕内容.

我已经说过没有可行的方法可以完全防止这种情况发生,但我正在寻找方法来为这个过程引入一些障碍.

我正在使用C#/ .NET 2.0和WinForms

.net c# .net-2.0 winforms c#-2.0

10
推荐指数
3
解决办法
1万
查看次数

DateTime字符串解析

我已经为解析ascii文件做了一个通用的解析器.当我想解析日期时,我使用DateTime对象中的ParseExact函数来解析,但是我遇到了年份的问题.

要解析的文本是"090812",其中parseExact字符串为"yyMMdd".

我希望得到一个DateTime对象说"12/8-2009",但我得到"12/8-1909".我知道,我可以通过之后解析它来制作一个丑陋的解决方案,从而修改年份..

有人知道解决这个问题的聪明方法吗?

提前致谢..

索伦

.net c# c#-2.0

10
推荐指数
1
解决办法
2682
查看次数

查找Type of Type参数

考虑以下:

private T getValue<T>(String attr)
{ ... }
Run Code Online (Sandbox Code Playgroud)

如何查看Type是什么?

我在考虑:

if("" is T) // String
if(1 is T) // Int32
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

c# .net-2.0 c#-2.0

10
推荐指数
3
解决办法
1万
查看次数

AuthenticateAsClient:System.IO.IOException:从传输流中收到意外的EOF或0字节

由于Heartbleed,我们的网关服务器已更新,此问题出现了.

由于POODLE,不再支持SSLv3.

  • 注意,问题仅出现在Win7 +盒子上; WinXP框没有问题(相同的代码,不同的操作系统=问题); 授予WinXP不再是一个有效的操作系统,只是想记下功能.

客户端应用程序(.NET 2.0)位于Windows 7(或8)框中.服务器在网关服务器后面的DMZ内运行.请注意,我发现.NET 4.0+上不再存在这个问题 - 但是由于遗留代码,我没有更新的奢侈.

Gateway Server是一个传递框,运行带有SSL的Apache HTTP Server.它的位置在DMZ之外,用于访问DMZ内部的服务器.在Gateway服务器上运行的软件版本是Apache/2.2.25(Win32),mod_jk/1.2.39,mod_ssl/2.2.25,OpenSSL/1.0.1g

以下是客户端应用程序上使用的代码(添加了大量的日志记录)...注意,'serverName'通常包含诸如" https://some.url.com "之类的值.

private bool ConnectAndAuthenicate(string serverName, out TcpClient client, out SslStream sslStream)
{
    client = null;
    sslStream = null;
    try
    {
        client = new TcpClient(serverName, 443); // Create a TCP/IP client; ctor attempts connection
        Log("ConnectAndAuthenicate: Client CONNECTED"));

        sslStream = new SslStream(client.GetStream(), false, ValidateServerCertificate, null);
        Log("ConnectAndAuthenicate: SSL Stream CREATED"));
    }
    catch (Exception x)
    {
        Log("ConnectAndAuthenicate: EXCEPTION >> CONNECTING to server: …
Run Code Online (Sandbox Code Playgroud)

tcpclient sslstream ioexception c#-2.0

10
推荐指数
1
解决办法
1万
查看次数

测试属性是否与nunit抛出异常

似乎没有属性的代表.有没有方便的方法来做到以下几点?

Assert.Throws<InvalidOperationException>(
       delegate
       {
           // Current is a property as we all know
           nullNodeList.GetEnumerator().Current;
       });
Run Code Online (Sandbox Code Playgroud)

c# delegates properties nunit-2.5 c#-2.0

9
推荐指数
2
解决办法
2587
查看次数

如何在CLR上运行需要协变返回类型和"真实"类方差的语言Scala?

CLR不支持协变返回类型完全方差(即应用于类,而不仅仅是接口和委托),但有些语言针对CLR使用这些功能中的一个或两个.

CLR是否有一些实用的解决方法来启用此功能,或者这些语言是否采用某种重写/擦除/ ...技术来完全支持其功能集?

c# clr types c#-2.0

9
推荐指数
1
解决办法
380
查看次数

如何使用字符串参数来表示命名空间或类型?

我需要在.NET 2.0 C#脚本中获得一些JSON输出.目标是使用一种方法输出我需要的所有JSON提要.所有模型都具有相同的id和name属性,因此我在这里有大约15个具有相同部分的命名空间.简而言之:因为我使用城堡我可以调用这样的函数:

/public/get_place_tags.castle
/public/get_place_types.castle
/public/get_place_whichEver.castle
Run Code Online (Sandbox Code Playgroud)

在城堡中调用每个方法,即:get_place_tags(){}但是我想不必工作,我可以调用一个方法从每个类型获取输出,如下所示:

/public/get_json.castle?wantedtype=place_types
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这一问题?

namespace campusMap.Controllers
{
    [Layout("home")]
    public class PublicController : BaseController
    {
        /*  works and returns */
        public void get_pace_type()
        {
            CancelView();
            CancelLayout();

            place_types[] types = ActiveRecordBase<place_types>.FindAll();
            List<JsonAutoComplete> type_list = new List<JsonAutoComplete>();

            foreach (place_types place_type in types)
            {
                JsonAutoComplete obj = new JsonAutoComplete();

                obj.id = place_type.place_type_id;
                obj.label = place_type.name;
                obj.value = place_type.name;

                type_list.Add(obj);
            }

            string json = JsonConvert.SerializeObject(type_list);
            RenderText(json);
        }

        /*  can;t ever find the namespace */
        public void get_json(string wantedtype) …
Run Code Online (Sandbox Code Playgroud)

.net c# casting castle-windsor c#-2.0

9
推荐指数
1
解决办法
1703
查看次数

WebClient.UploadFile将上传文件作为流传递

我试图在我的项目中使用WebClient.UploadFile将文件发布到服务器.WebClient.UploadFile接受文件名uri作为参数,但我想传递文件流而不是文件名uri.这可能与WebClient有关吗?

webclient c#-2.0

9
推荐指数
2
解决办法
4804
查看次数